二叉树的前序遍历(递归和非递归)
来源:互联网 发布:数据字典中的数据项 编辑:程序博客网 时间:2024/06/15 22:22
上一篇是后续遍历,这一篇记录一下前序遍历,递归代码如下:
ArrayList<Integer> list = new ArrayList<>(); public ArrayList<Integer> preorderTraversal(TreeNode root) { if(root == null) return list; pre(root); return list; } private void pre(TreeNode root){ if(root == null) return; list.add(root.val); pre(root.left); pre(root.right); }
非递归的情况是用一个栈记录当前访问的节点的左右节点,右节点先入栈,左节点后入栈,这样出栈的时候顺序才是正确的。
非递归代码:
ArrayList<Integer> list = new ArrayList<>(); public ArrayList<Integer> preorderTraversal(TreeNode root) { if(root == null) return list; Stack<TreeNode> s = new Stack<>(); s.push(root); while(!s.isEmpty()){ TreeNode temp = s.pop(); list.add(temp.val); if(temp.right != null){ s.push(temp.right); } if(temp.left != null){ s.push(temp.left); } } return list; }
阅读全文
0 0
- 二叉树的前序遍历(递归+非递归)
- 数据结构:二叉树的前序,中序,后序遍历(递归和非递归)
- 二叉树的递归和非递归遍历(前序、中序、后序)
- Lintcode 二叉树的前序遍历 (递归和非递归法)
- 二叉树的前序遍历(递归和非递归)
- 二叉树的前序遍历(非递归)
- 【二叉树】 前序、中序和后序的递归遍历与非递归遍历
- 二叉树的前、中、后序遍历(递归和非递归)、层序遍历、深度、叶子节点个数
- 二叉树详解及二叉树的前序、中序、后序遍历(递归和非递归)
- 以二叉树的前序遍历为例,递归和非递归方式的实现
- 二叉树的前序,中序,后序遍历。用递归和非递归实现
- 43.递归和非递归俩种方法实现二叉树的前序遍历。
- 递归和非递归俩种方法实现二叉树的前序遍历
- 【算法题】二叉树的前序遍历(递归和非递归算法分析)
- 递归和非递归俩种方法实现二叉树的前序遍历
- 算法习题43:递归和非递归实现二叉树的前序遍历
- 递归和非递归实现二叉树的前序遍历
- 请用递归和非递归俩种方法实现二叉树的前序遍历。
- 不常用LSA
- 简易的渐变沉浸式
- 第八周(2)项目4—广义表算法库及应用
- SQL Server触发器
- 贴一份软件包自带的SNMP配置说明
- 二叉树的前序遍历(递归和非递归)
- const 、& 、*在变量定义时的含义
- [Git报道.1]GIT windows的安装(msysGit)
- Linux下OneinStack一键安装JAVA+PHP+Tomcat+Nginx+MySQL网站环境
- TensorFlow学习--MNIST入门(附脚本input_data.py)
- 算法:笔记1 自定义栈
- 常见web服务器简介
- python3 自定义对象的打印
- tesit