【LeetCode】二叉搜索树的前序,中序,后续遍历非递归方法
2018-09-06 17:27
381 查看
前序遍历
public List<Integer> preorderTraversal(TreeNode root) { ArrayList<Integer> list = new ArrayList<Integer>(); Stack<TreeNode> stack=new Stack<TreeNode>(); TreeNode p=root; while(!stack.isEmpty()||p!=null){ if(p!=null){ stack.push(p); list.add(p.val); // Add before going to children p=p.left; }else{ TreeNode node=stack.pop(); p=node.right; } } return list; }
中序遍历
public List<Integer> inorderTraversal(TreeNode root) { ArrayList<Integer> list = new ArrayList<Integer>(); Stack<TreeNode> stack=new Stack<TreeNode>(); TreeNode p=root; while(!stack.isEmpty()||p!=null){ if(p!=null){ stack.push(p); p=p.left; }else{ TreeNode node=stack.pop(); list.add(node.val);// Add after all left children p=node.right; } } return list; }
后序遍历
public List<Integer> postorderTraversal(TreeNode root) { LinkedList<Integer> list = new LinkedList<Integer>(); Stack<TreeNode> stack=new Stack<TreeNode>(); TreeNode p=root; while(!stack.isEmpty()||p!=null){ if(p!=null){ stack.push(p); list.addFirst(p.val);// Reverse the process of preorder p=p.right; }else{ TreeNode node=stack.pop(); p=node.left; } } return list; }
相关文章推荐
- 二叉搜索树的相关操作:插入节点,删除节点,排序,查找,最大值,最小值,前序,中序,后序遍历(主要用到递归的方法)
- 递归和非递归俩种方法实现二叉树的前序、中序、后续遍历
- 二叉树的先序、中序、后序遍历方法(递归与非递归方法)——《数据结构》
- LeetCode:Binary Tree Preorder Traversal(非递归方法前序遍历二叉树)
- 二叉树前序、中序和后序非递归遍历的方法
- 二叉树先序、中序、后续遍历(非递归实现)
- 二叉树非递归遍历,不使用栈(前序,中序,后续)
- Java实现树的遍历(前序、中序、后续(递归|非递归)、层次)
- 递归方法 前序 中序 后序 遍历二叉树
- 二叉树的前序、中序、后序遍历的非递归方法 python
- 二叉树的前序、中序、后续遍历,递归、非递归实现
- 第6章 树和二叉树——递归方法先序、中序、后序遍历二叉链表表示的二叉树
- 二叉树的实现&&递归和非递归方式前序、中序、后续遍历&&发现一个节点中序遍历的下一节点
- 二叉树的建立,非递归前序、中序、后续遍历
- Java实现二叉树的前序、中序、后序遍历(递归方法)
- 【Java语言学习】之递归、非递归前序、中序、后续遍历二叉树
- java 创建二叉树 前序、中序、后续 递归遍历树 和 非递归遍历,递归求树高,递归求树节点数
- Java实现二叉树的前序、中序、后序、层序遍历(非递归方法)
- Java 二叉树的前序、中序、后续遍历 递归和迭代实现
- leetcode笔试题二叉树的前序、中序、后序遍历的递归和循环c++实现