二叉树的三种遍历方式(递归和非递归)
2016-09-19 21:54
465 查看
二叉树有三种遍历方式:前序、中序和后序。
栈s1用于储存子节点,s2储存根节点
递归遍历
1.前序遍历
public static void preTraversal(Node root) { if(root==null) return ; System.out.println(root.value); preTraversal(root.left); preTraversal(root.right); }
2.中序遍历
public static void midTraversal(Node root) { if(root == null) return ; midTraversal(root.left); System.out.println(root.value); midTraversal(root.right); }
3.后序遍历
public static void neTraversal(Node root) { if(root==null) return; neTraversal(root.left); neTraversal(root.right); System.out.println(root.value); }
非递归方式实现
由于栈这种数据结构有“时光机”的性能,因此,利用栈进行非递归方式的遍历1.前序遍历
public static void preOrder(Node root) { if(root==null) return; Stack<Node> stack = new Stack<Node>(); Node node = root; stack.push(node); while(!stack.isEmpty()) { node = stack.pop(); System.out.println(node.value);//遍历根节点 if(node.right!=null)//如果左节点非空 stack.push(node.right); if(node.left!=null)//右节点非空 stack.push(node.left); } }
2.中序遍历
public static void InO(Node root) { if (root == null) return; Stack<Node> stack = new Stack<>(); Node node = root; while (node != null || !stack.isEmpty()) { if (node != null) { stack.push(node); node = node.left; } else { node = stack.pop(); System.out.println(node.value); node = node.right; } } }
3.后序遍历
public static void houxubianli(Node root) { if (root == null) return; Stack<Node> s1 = new Stack<>(); Stack<Node> s2 = new Stack<>(); Node node = root; s1.push(node); while (!s1.isEmpty()) { node = s1.pop(); s2.push(node); if (node.right != null) { s1.push(node.right); } if (node.left != null) { s1.push(node.left); } } while(!s2.isEmpty()) { System.out.println(s2.pop()); } }
栈s1用于储存子节点,s2储存根节点
相关文章推荐
- 二叉树的存储方式以及递归和非递归的三种遍历方式
- 二叉树的存储方式以及递归和非递归的三种遍历方式
- 二叉树的三种遍历方式(递归和非递归的实现方法)
- 二叉树的存储方式以及递归和非递归的三种遍历方式
- 【python中二叉树的实现】python中二叉树的创建、三种方式递归遍历和非递归遍历
- 二叉树的存储方式以及递归和非递归的三种遍历方式
- 二叉树的存储方式以及递归和非递归的三种遍历方式
- 二叉树的三种遍历方式(递归与非递归详细实现)
- 二叉树的三种遍历方式的递归实现和非递归实现
- 二叉树的三种遍历方式的递归与非递归实现
- 详细讲解二叉树三种遍历方式的递归与非递归实现
- 二叉树三种递归遍历方式
- 43 递归和非递归俩种方法实现二叉树的三种遍历
- 二叉树的三种遍历方式:递归、栈、循环 分类: C/C++ 数据结构与算法 2015-06-21 09:47 269人阅读 评论(0) 收藏
- 二叉树的三种遍历方法(递归和非递归)
- 二叉树的三种遍历的方法(递归和非递归完整版)
- 二叉树的三种遍历方式的循环和递归的实现方式
- 二叉树三种遍历方式的递归和循环实现
- 二叉树的三种非递归遍历方式。
- 详细讲解二叉树三种遍历方式的递归与非递归实现