二叉树学习——前序、中序、后序遍历(Java实现)
来源:互联网 发布:2016世界各国经济数据 编辑:程序博客网 时间:2024/06/08 19:28
一些学习总结
递归实现:
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;}
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;}
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;}
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;}
0 0
- 二叉树学习——前序、中序、后序遍历(Java实现)
- JAVA实现二叉树的前、中、后序遍历
- java实现根据前序遍历构建二叉树(前序遍历、中序遍历、后序遍历)
- 二叉树的遍历问题-----Java实现(中序、前序、后序、遍历)
- 二叉树遍历(Java)---前序遍历,中序遍历,后序遍历
- 数据结构--二叉树遍历前序、中序、后序(java实现)
- 二叉树的前序、中序、后序(递归、非递归)遍历java实现
- Java实现二叉树的前序、中序、后序遍历(递归方法)
- Java实现二叉树的前序、中序、后序遍历(非递归方法)
- 通过前序遍历和中序遍历重建二叉树以及输出后序遍历(Java实现)
- JAVA实现二叉树的前、中、后序遍历(递归与非递归)
- java 实现二叉树深度优先遍历的 前、中、后序遍历(递归)
- 二叉树非递归前、中、后序遍历实现
- Java实现二叉树的前序、中序和后序遍历——递归法
- Java实现完全二叉树,实现非递归前序,中序,后序遍历
- 数据结构 — 实现二叉树的前序,中序,后序遍历(非递归)
- 【二叉树遍历算法】——前/中/后序递归与非递归的实现
- 二叉树的前序,中序,后序和层序遍历java实现
- 51nod 1076 2条不相交的路径【边连通分量】
- 广播:开机自启播放音乐
- Android Fragment完全解析,关于碎片你所需知道的一切
- Linux Kernel设备驱动模型之struct kobj_type
- Codeforces 366C
- 二叉树学习——前序、中序、后序遍历(Java实现)
- JDBC连接Oracle数据库
- php的意思
- Linux Kernel设备驱动模型之struct kobj_attribute
- SSM Mapper.xml 数组和集合作为 sql 语句 参数
- 机器学习 — 提供推荐
- kakfa在zookeeper中的节点结构
- 浏览器窗口大小改变时,动态改变div高度和宽度
- 八大排序算法