二叉树学习——前序、中序、后序遍历(Java实现)
2017-03-09 19:42
579 查看
一些学习总结
2.中序遍历
3.后序遍历
5.中序遍历
6.后序遍历
递归实现:
1.前序遍历public static ArrayList<Integer> preorderTraversal(TreeNode root) { ArrayList<Integer> sort = new ArrayList<>(); if (root == null) { return sort; } if (root.left == null && root.right == null) { sort.add(root.val); return sort; } sort.add(root.val); sort.addAll(preorderTraversal(root.left)); sort.addAll(preorderTraversal(root.right)); return sort; }
2.中序遍历
public static ArrayList<Integer> inorderTraversal(TreeNode root) { ArrayList<Integer> sort = new ArrayList<>(); if (root == null) { return sort; } if (root.left == null && root.right == null) { sort.add(root.val); return sort; } sort.addAll(inorderTraversal(root.left)); sort.add(root.val); sort.addAll(inorderTraversal(root.right)); return sort; }
3.后序遍历
public static ArrayList<Integer> postorderTraversal(TreeNode root) { ArrayList<Integer> sort = new ArrayList<>(); if (root == null) { return sort; } if (root.left == null && root.right == null) { sort.add(root.val); return sort; } sort.addAll(postorderTraversal(root.left)); sort.addAll(postorderTraversal(root.right)); sort.add(root.val); return sort; }
非递归实现
4. 前序遍历public static ArrayList<Integer> preorderTraversal(TreeNode root) { ArrayList<Integer> sort = new ArrayList<>(); TreeNode cur = root; Stack<TreeNode> stack = new Stack<>(); while (cur != null || !stack.isEmpty()) { while (cur != null) { sort.add(cur.val); stack.push(cur); cur = cur.left; } cur = stack.pop(); cur = cur.right; } return sort; }
5.中序遍历
public static ArrayList<Integer> inorderTraversal(TreeNode root) { ArrayList<Integer> sort = new ArrayList<>(); TreeNode cur = root; Stack<TreeNode> stack = new Stack<>(); while (cur != null || !stack.isEmpty()) { while (cur != null) { stack.push(cur); cur = cur.left; } cur = stack.pop(); sort.add(cur.val); cur = cur.right; } return sort; }
6.后序遍历
public static ArrayList<Integer> postorderTraversal(TreeNode root) { ArrayList<Integer> sort = new ArrayList<>(); Stack<TreeNode> stack = new Stack<>(); Stack<TreeNode> stack2 = new Stack<>(); TreeNode cur = root; while (cur != null || !stack.isEmpty()) { while (cur != null) { stack.push(cur); stack2.push(cur); cur = cur.right; } cur = stack.pop(); cur = cur.left; } sort.add(stack2.pop().val); while (stack2.size() > 0) { cur = stack2.pop(); sort.add(cur.val); } return sort; }
相关文章推荐
- 二叉树建立以及先序、中序、后序、层次遍历(JAVA 实现)
- JAVA实现二叉树的遍历的非递归算法及递归算法(前序,中序,后序,层次)
- Java实现二叉树的前序、中序、后序、层序遍历(非递归方法)
- Java实现二叉树的前序、中序、后序、层序遍历(递归方法)
- Java实现二叉树的前序、中序、后序、层序遍历(非递归方法)
- java语言实现二叉树的前序、中序与后序遍历(递归与非递归)
- Java实现二叉树先序,中序,后序遍历
- 二叉树的先序、中序、后序和中序遍历——Java实现
- Java实现二叉树的先序、中序、后序、层次遍历,数的最大深度、最大宽度
- 二叉树的非递归前序,中序,后序遍历的Java实现
- Java迭代实现二叉树的前序、中序、后序遍历
- JAVA下实现二叉树的先序、中序、后序、层序遍历(递归和循环)
- 二叉树的前序、中序、后序遍历Java实现
- Java实现二叉树的先序、中序、后序、层级遍历
- java 实现二叉树的构建,先序,中序,后序,层次,递归,非递归的遍历
- 二叉树的遍历问题-----Java实现(中序、前序、后序、遍历)
- 数据结构--java实现二叉树的先序、中序、后序、层次遍历及根据先序中序建立二叉树
- java实现二叉树的先序、中序、后序遍历
- Java实现二叉树的前序、中序、后序、层序遍历(递归方法)
- java语言实现二叉树的前序、中序与后序遍历(递归与非递归) 层次遍历