二叉树的递归,迭代(非递归遍历)
2018-02-26 22:19
330 查看
package search; /** * Created by 灵魂都在冒香气的神 on 2018/2/24. */ public class TreeNode { public int data; public TreeNode left; public TreeNode right; public Boolean isFirst; //为非递归后序遍历增加的自段 public TreeNode(int num) { data=num; } public TreeNode() { } }
public static void inorderPrint0(TreeNode root) //递归中序遍历二叉树 { if (root==null) { return; } inorderPrint0(root.left); System.out.println(root.data); inorderPrint0(root.right); } public static void inorderPrint1(TreeNode root) //非递归中序遍历二叉树 { LinkedList<TreeNode> stack=new LinkedList<>(); while (root!=null||!stack.isEmpty()) { while (root!=null) { stack.push(root); root=root.left; } if (!stack.isEmpty()) { root=stack.pop(); System.out.println(root.data); root=root.right; } } } public static void preorderPrint0(TreeNode root) //递归前序遍历二叉树 { if (root==null) { return; } System.out.println(root.data); preorderPrint0(root.left); preorderPrint0(root.right); } public static void preorderPrint1(TreeNode root) //非递归前序遍历二叉树 { LinkedList<TreeNode> stack=new LinkedList<>(); while (root!=null||!stack.isEmpty()) { System.out.println(root.data); stack.push(root); root=root.left; } if (!stack.isEmpty()) { root=stack.pop(); root=root.right; } } public static void postorderPrint0(TreeNode root) //递归后序遍历二叉树 { if (root==null) { return; } postorderPrint0(root.left); postorderPrint0(root.right); System.out.println(root.data); } public static void postorderPrint1(TreeNode root) //非递归后序遍历二叉树 { LinkedList<TreeNode> stack=new LinkedList<>(); while (root!=null||!stack.isEmpty()) { while (root!=null) { root.isFirst=true; stack.push(root); root=root.left; } if (!stack.isEmpty()) { root=stack.pop(); if (root.isFirst) { root.isFirst=false; stack.push(root); root=root.right; } else { System.out.println(root.data); root=null; } } } }
相关文章推荐
- 二叉树的创建,递归和非递归遍历
- 二叉树的先中后序遍历,递归遍历,非递归遍历
- 二叉树递归与非递归遍历
- 二叉树递归与非递归遍历
- Java实现二叉树的创建、递归/非递归遍历
- 二叉树的遍历(递归加迭代)
- 二叉树的镜像--递归和迭代分别实现
- 二叉树的先序递归以及非递归遍历
- 二叉树的非递归遍历以及递归遍历
- 数据结构——二叉树的递归与非递归遍历(先序,中序,后序)
- 二叉树的递归与非递归遍历
- 二叉树的创建和递归与非递归遍历
- 二叉树的先序、中序、后序、层序递归及非递归遍历
- 二叉树的递归、迭代遍历的模板代码
- C++创建二叉树与遍历(递归与迭代)
- 二叉树递归与非递归遍历实现
- 二叉树的先序、中序、后序递归遍历和非递归遍历
- 二叉树的递归遍历和非递归遍历(附详细例子)
- 前、中、后、序递归遍历二叉树以及非递归遍历
- 二叉树的非递归遍历(递归和非递归)