首页 > 编程语言 >十六、二叉树(二叉链表)遍历算法

十六、二叉树(二叉链表)遍历算法

时间:2022-11-18 00:00:54浏览次数:42  
标签:结点 遍历 中序 visit 二叉 链表 访问 二叉树

一、二叉树的遍历

遍历二叉树( Traversing binary tree )是指按某条搜索路径巡访树中每个结点,使得每个结点均被访问一次,而且仅被访问一次。

先序遍历(根左右)

中序遍历(左根右)

后序遍历(左右根)

层次遍历

若二叉树为空,则空操作;否则

(1)访问根结点;

(2)先序遍历左子树;

(3)先序遍历右子树。

若二叉树为空,则空操作;否则

(1)中序遍历左子树;

(2)访问根结点;

(3)中序遍历右子树。

若二叉树为空,则空操作;否则

(1)后序遍历左子树;

(2)后序遍历右子树;

(3)访问根结点。

若二叉树为空,则空操作;否则

(1)访问根节点,将根节点入队;

(2)当队列不为空是,重复以下操作。

1. 队头结点出队;

2. 若其有左孩子,则访问左孩子并入队;

3. 若其有右孩子,则访问右孩子并入队;

 

 

中序遍历递归算法

Status InOrderTraverse(BiTree T, Status(*visit)(TElemType e))
{		//中序遍历二叉树T, visit是对数据元素操作的应用函数
	if (T == NULL) return OK;
	if (InOrderTraverse(T->lchild, visit) == ERROR)
		return ERROR;							//(1)递归遍历T的左子树
	if (visit(T->data) == ERROR)
		return ERROR;							//(2)访问结点的数据域
	return InOrderTraverse(T->rchild, visit);	//(3)递归遍历T的右子树
}

 

标签:结点,遍历,中序,visit,二叉,链表,访问,二叉树
From: https://www.cnblogs.com/haibersut/p/16901857.html

相关文章

  • LinkedList双向链表
           ......
  • 约瑟夫问题--循环链表实现
    约瑟夫问题--循环链表实现问题:设编号为1、2...........n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m的那个人出列,它(m)的下一位又从1开始报数,数到m的那个人又......
  • 【树】之二叉树(C语言)(含图解)
    树&二叉树​​树​​​​树的概念及结构​​​​树的概念​​​​树的要求​​​​树的表示​​​​现实应用​​​​二叉树​​​​概念​​​​特殊的二叉树​​​​注意......
  • NowCoder刷题(1)【树】二叉树的遍历(含图解)
    二叉树的遍历(IO型)二叉树遍历_牛客题霸_牛客网(nowcoder.com)题目描述如图所示的这棵树前序输出结果为A-B-D-#-#-E-#-#-C-#-#还原过程示例1示例2——前序遍历还原代码实现......
  • LeetCode刷题(1)【链表】【反转链表】(C语言)
    我的小站——半生瓜のblog(doraemon2.xyz)题目链接——206.反转链表-力扣(LeetCode)(leetcode-cn.com)反转链表思路一:反转指针。本质上就是调转指针的方向。首先我们......
  • 【链表】双向循环带头链表-增-删-查(C语言)
    我的小站——半生瓜のblog——同步更新单链表存在的缺陷:不能从后往前走,找不到他的前驱,指定位置删除增加尾删都要找前一个,时间复杂度都是O(n)针对上面的这些缺陷的解决......
  • 【链表】单链表-增-删-查(C语言)
    我的小站——半生瓜のblog单链表​​结构体定义​​​​打印​​​​创建结点​​​​尾插​​​​头插​​​​尾删​​​​头删​​​​查找​​​​在指定位置前插入某个......
  • LeetCode刷题(5)【链表】【环形链表II】(C语言)
    环形链表I​​LeetCode刷题(3)【链表】【环形链表】&扩展_半生瓜のblog-CSDN博客​​环形链表II142.环形链表II-力扣(LeetCode)(leetcode-cn.com)这个题写起来不难,但是证......
  • LeetCode刷题(2)【链表】【合链表&链表的中间结点】(C语言)
    我的小站——半生瓜のblog快慢指针问题:思路:定义一个快指针和一个慢指针,快指针走到结束的时候,慢指针刚好走到一半。链表的中间结点。876.链表的中间结点-力扣(LeetCode)(le......
  • LeetCode刷题(3)【链表】【环形链表】&扩展(C语言)
    我的小站——半生瓜のblog环形链表141.环形链表-力扣(LeetCode)(leetcode-cn.com)什么是链表带环:链表的最后一个元素不指向空而指向前面的某个结点。思路:快慢指针,慢指针走......