IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 二叉树中序遍历的非递归实现 -> 正文阅读

[数据结构与算法]二叉树中序遍历的非递归实现

(复习快打一些自己的理解以帮助记忆,有误之处劳烦指出)

先上代码,参考王道21年数据结构讲义

void InOrder2(BiTree T){
	InitStack(k);	//初始化栈
	BiTree p = T;		//p是遍历指针
	while(p || !IsEmpty(S)){
		if(p){	//一路向左
			Push(S, p);
			p = p->lchild;	//左孩子非空,一路向左
		}else{	//出栈,访问栈顶结点右子树
			Pop(S, p);
			visit(p);
			p = p->rchild
		}
	}//while
}

首先明确:

  1. 栈帮助确定访问顺序,visit才是访问输出。
  2. 根节点三个作用:访问本身、转向左子结点、转向右子结点。路过了但三个功能未全部完成的都在栈里,只有全完成了才可出栈。(三种遍历都适用)
  3. 树从上往下遍历是入栈过程,从下往上是出栈过程。
  4. 遍历过程中:左孩子为空说明再无左子树,可访问根节点(visit),再访问右子树。右子树不空则遍历之;右子树为空则说明当前结点及以下已全部遍历完,可返回上一级结点。

Q1:中序遍历的第一个结点?
A:二叉树的最左下结点。因为中序遍历只有访问完左子树才能访问根节点,in other word,不先把左边的访问了轮不到中间的。

Q2:为什么栈顶元素就是要回溯的上一元素?
A:由Q1可知虽然先经过了根节点,但只是路过不访问,先访问的是左孩子。所以栈里放的是经过但未访问的根节点(祖先结点)。且入栈顺序是从树顶到树根,也就是低优先级到高优先级,所以栈顶元素是最高优先级的根结点(注意:不一定是当前节点的父结点,只是所有经过但未访问中的根节点中具有最高优先级(也即高度最低)的结点)。

Q3:为什么结束条件?
A:因为栈非空代表当前仅在处理左子树,栈里的根节点和右子树还未访问;遍历指针非空是当前手头处理的还没完,这个是比较好想到的循环终止条件。

一个思考:
代码聚焦过程是NL的先后顺序,至于右子树的遍历仍可理解为递归,只不过递归函数是对NL的处理过程(相当于只处理NL,遇到R也当成新的NL,这样总能遍历完)。
————此适用于中序、前序遍历

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-07-16 22:03:18  更:2021-07-16 22:03:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/8 3:22:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码