树的三种后序遍历
来源:互联网 发布:mac如何更新flash 编辑:程序博客网 时间:2024/06/03 19:29
使用递归进行遍历
public static void afterOrder(BinaryTree root) { if (root == null) throw new IllegalArgumentException("请输入一棵树"); if (root.getLeft() != null) afterOrder(root.getLeft()); if (root.getRight() != null) afterOrder(root.getRight()); System.out.print(root.getData()+"\t"); }}
使用两个栈进行遍历
public static void afterOrderUnRecur(BinaryTree root) { if (root == null) throw new IllegalArgumentException("请输入一棵树"); if (root != null) { Stack<BinaryTree> stack1 = new Stack<>(); Stack<BinaryTree> stack2 = new Stack<>(); stack1.push(root); while (!stack1.isEmpty()) { root = stack1.pop(); stack2.push(root); if (root.getLeft() != null) stack1.push(root.getLeft()); if (root.getRight() != null) stack1.push(root.getRight()); } while (!stack2.isEmpty()) { System.out.print(stack2.pop().getData() + "\t"); } } }
使用一个栈进行遍历
public static void afterOrderUnRecurUseOneStack(BinaryTree root) { if (root != null) { Stack<BinaryTree> stack = new Stack<>(); BinaryTree pre = null, curr; stack.push(root); while (!stack.isEmpty()){ curr = stack.peek(); if (pre != curr.getRight() && pre != curr.getLeft() && curr.getLeft() != null){ stack.push(curr.getLeft()); } else if (pre != curr.getRight() && curr.getRight() != null){ stack.push(curr.getRight()); } else { System.out.print(stack.pop().getData()+"\t"); pre = curr; } } } }
阅读全文
0 0
- 树的三种后序遍历
- 二叉树的遍历(层遍历和深度遍历)
- 二叉树的前序中序后序遍历,非递归遍历 层次遍历
- 二叉树的先中后序遍历,递归遍历,非递归遍历
- 二叉树遍历-----前序后序迭代遍历的新思路
- 二叉树的遍历-按层次遍历
- 二叉树的遍历(递归遍历)
- 二叉树的遍历-层次遍历
- 树的遍历
- 六、 树的遍历
- 二叉树的遍历
- haffman树的遍历
- 二叉树的遍历
- 树的各种遍历
- 树的遍历
- 二叉树的遍历
- C++树的遍历
- Java树的遍历
- multipart/form-data请求与文件上传的细节
- 9.14 学到了什么
- Java HashSet 比较器
- Python学习系列----第四章 函数
- 1008. Elevator (20)
- 树的三种后序遍历
- Color & Font
- Java回调机制解读
- Hibernate入门到开发(一)之入门小程序
- CNETOS LINUX 计划任务详解
- Linux下的压缩之tar,zip,gzip,bzip2
- (Leetcode)400. Nth Digit
- springmvc 学习1 springmvc的入口
- python3基础学习基础数据类型