【复习笔记】二叉树的前中后非递归遍历算法
来源:互联网 发布:360浏览器 淘宝比价 编辑:程序博客网 时间:2024/05/29 15:11
前序遍历
思路:全局指针,指向根节点,所到节点立即访问,然后把节点入栈,往左走。
当左子树为空时,pop栈顶节点,如果栈顶右子树不空,把全局指针往右走,继续循环。
循环结束条件:栈为空并且全局指针为null时。
public static void preIte(TreeNode root){Stack<TreeNode> stack = new Stack<TreeNode>();TreeNode temp = root;while(!stack.isEmpty() || temp != null){if(temp != null){System.out.println(temp.val);stack.add(temp);temp = temp.left;}else{temp = stack.pop();temp = temp.right;}}}
中序遍历
思路:全局指针,初始指向根节点,循环入栈,直到全局指针的左子树为空。
pop栈顶节点并访问,如果栈顶节点的右子树不为空,则全局指针往右走,继续循环。
循环结束条件:栈空或者全局指针为null时。
public static void midIte(TreeNode root){Stack<TreeNode> stack = new Stack<TreeNode>();TreeNode temp = root;while(temp != null || !stack.isEmpty()){while(temp != null){stack.add(temp);temp = temp.left;}if(!stack.isEmpty()){temp = stack.pop();System.out.println(temp.val);temp = temp.right;}}}
后序遍历
思路:全局指针+上一次遍历节点的指针,首先根节点入栈。
如果全局指针现在指向的节点没有左右孩子 或者 全局指针指向的节点的左孩子或者右孩子是上一次遍历的节点,则
遍历当前节点,并出栈,同时上一次遍历的节点指向此节点。否则,当前节点的右孩子若不为空,右孩子入栈,当前节点的左孩子不为空,左孩子入栈。
循环结束条件:栈空。
public static void postIte(TreeNode root){Stack<TreeNode> stack = new Stack<TreeNode>();TreeNode temp = root;TreeNode preNode = null;if(temp != null) stack.add(temp);while(!stack.isEmpty()){temp = stack.peek();if((temp.right == null && temp.left == null) ||(preNode != null && (temp.left == preNode || temp.right == preNode))){System.out.println(temp.val);stack.pop();preNode = temp;}else{if(temp.right != null)stack.add(temp.right);if(temp.left != null)stack.add(temp.left);}}}
阅读全文
0 0
- 【复习笔记】二叉树的前中后非递归遍历算法
- 【算法学习笔记】10.数据结构基础 二叉树初步练习3(遍历与递归复习)
- 算法复习之二叉树的遍历
- 二叉树遍历的非递归算法
- 二叉树遍历的递归算法程序
- 遍历二叉树的非递归算法
- 遍历二叉树的非递归算法
- 二叉树的遍历非递归算法
- 遍历二叉树的递归算法
- 遍历二叉树的非递归算法
- 二叉树的遍历非递归算法
- 二叉树遍历的非递归算法
- 二叉树的非递归遍历算法
- 二叉树遍历的非递归算法
- 二叉树遍历的非递归算法
- 二叉树遍历的非递归算法
- 二叉树的三种非递归遍历算法
- 二叉树遍历的非递归算法
- 关于集合
- VS2013+OpenCV2.4.10永久配置
- HBase查找一条数据的过程
- PyBOMBS安装GNURadio
- 没有技术背景的产品新人必备的3大生存指南
- 【复习笔记】二叉树的前中后非递归遍历算法
- Eclipse和PyDev搭建完美Python开发环境(Windows篇)
- HashSet源码分析
- cout输出顺序
- RePlugin 使用总结
- 手把手教你利用Jenkins持续集成iOS项目
- 51Nod 1681(DFS序+主席树)
- securecrt 空格 乱码 linux gcc
- 年少轻狂,仗剑天涯