二叉树的遍历
二叉树常见的遍历方式
前序遍历
访问顺序:根节点、前序遍历左子树,前序遍历右子树
利用栈实现
1.设置node=root
2.循环执行以下操作
如果node != null
对node进行访问,将node.right入栈
设置node = node.left
如果node == null
如果栈为空,结束遍历
如果栈不为空,弹出栈顶元素并赋值给node
中序遍历
访问顺序:中序遍历左子树、根节点、中序遍历右子树
利用栈实现
设置node = root
循环执行以下操作
如果node != null
将node入栈,设置node = node.left
如果 node == null
如果栈为空,结束遍历
如果栈不为空,弹出栈顶元素并赋值给node
对node进行访问
设置node = node.right
后序遍历
访问顺序:后序遍历左子树、后序遍历右子树、根节点
实现方式
将root入栈
循环执行以下操作,直到栈为空
如果栈顶节点是叶子节点或者上一次访问的节点是栈顶节点的子节点
弹出栈顶节点,进行访问
否则
将栈顶节点的right、left按顺序入栈
层序遍历
访问顺序:从上到下、从左到右依次访问每个节点
实现思路:使用队列
将根节点入队
循环执行以下操作,知道队列为空
将队头结点A出队,进行访问
将A的左节点入队
将A的有节点入队