二叉树的遍历
来源:互联网 发布:爱普生清零软件中文版 编辑:程序博客网 时间:2024/06/03 21:30
二叉树的基本遍历,包括前序、中序和后序,实现方式有递归和非递归;
public class TreeNode { Object val; TreeNode left; TreeNode right; TreeNode(Object x) { val = x; }}public class BinaryTreeTraversal { public static void main(String[] args) { TreeNode root = new TreeNode("A"); TreeNode l1 = new TreeNode("B"); TreeNode l2 = new TreeNode("C"); TreeNode l3 = new TreeNode("D"); TreeNode l4 = new TreeNode("E"); TreeNode l5 = new TreeNode("F"); root.left = l1; l1.right = l2; root.right = l3; l3.left = l4; l3.right = l5; inOrder(root); inOrder1(root); } public static void preOrder(TreeNode root){ if(root != null){ visit(root); preOrder(root.left); preOrder(root.right); } } public static void inOrder(TreeNode root){ if(root != null){ inOrder(root.left); visit(root); inOrder(root.right); } } public static void postOrder(TreeNode root){ if(root != null){ postOrder(root.left); postOrder(root.right); visit(root); } } public static void preOrder1(TreeNode root){ Stack<TreeNode> stack = new Stack<TreeNode>(); TreeNode p = root; while(p != null || !stack.empty()){ while(p != null){ visit(p); stack.push(p); p = p.left; } if(!stack.empty()){ p = stack.pop(); p = p.right; } } } public static void inOrder1(TreeNode root){ Stack<TreeNode> stack = new Stack<TreeNode>(); TreeNode p = root; while(p != null || !stack.empty()){ while(p != null){ stack.push(p); p=p.left; } if(!stack.empty()){ p = stack.pop(); visit(p); p = p.right; } } } public static void postOrder1(TreeNode root){ Stack<TreeNode> stack = new Stack<TreeNode>(); TreeNode p = root, q=null; while(p != null){ while(p != null){ stack.push(p); p = p.left; } while(p != null && (p.right == null || p.right == q)){ visit(p); q = p; if(stack.empty()){ return; } p = stack.pop(); } stack.push(p); p = p.right; } }}
阅读全文
0 0
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 课程4 项目二
- java内部类
- curl命令详解
- 对 SSL协议进行wireshark抓包实验
- Mongodb字段更新$setOnInsert操作符
- 二叉树的遍历
- SSH框架 Blob类型图片处理
- LPC1768 移植freeRTOS
- Ubuntu安装tomcat
- Java SimpleFileVisitor遍历文件夹与File遍历文件夹的速度对比
- SWD下载程序出现错误cannot access memory
- Spring Cloud原理分析及使用<一>
- Spark简介
- JavaScript call和apply的区别