题目链接

题目大意:返回二叉树的先序遍历list。中序见94,后序见145。

法一:普通递归遍历,只是这里多了一个list数组,所以分成了两个函数。代码如下(耗时1ms):

     public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> list = new ArrayList<Integer>();
list = dfs(root, list);
return list;
}
public static List<Integer> dfs(TreeNode root, List<Integer> list) {
if(root == null) {
return list;
}
else {
list.add(root.val);
list = dfs(root.left, list);
list = dfs(root.right, list);
return list;
}
}

法二(借鉴):先序非递归。代码如下(耗时1ms):

     public List<Integer> preorderTraversal(TreeNode root) {
Stack<TreeNode> stack = new Stack<TreeNode>();
TreeNode tmp = root;
List<Integer> list = new ArrayList<Integer>();
while(tmp != null || !stack.isEmpty()) {
//将所有左孩子压栈,直到没有左孩子,并且由于是先序遍历,所以在压左孩子的时候就放入结果list中
while(tmp != null) {
list.add(tmp.val);
stack.push(tmp);
tmp = tmp.left;
}
//如果左孩子压完了,就访问右孩子
if(!stack.isEmpty()) {
tmp = stack.pop();
tmp = tmp.right;
}
}
return list;
}

中序非递归

     public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> list = new ArrayList<Integer>();
Stack<TreeNode> stack = new Stack<TreeNode>();
TreeNode tmp = root;
while(tmp != null || !stack.isEmpty()) {
while(tmp != null) {
stack.push(tmp);
tmp = tmp.left;
}
//与先序不同的是,在弹出时放入结果list
if(!stack.isEmpty()) {
tmp = stack.pop();
list.add(tmp.val);
tmp = tmp.right;
}
}
return list;
}

最新文章

  1. 12,13 Proxy和Reflect
  2. elk系列6之tcp模块的使用
  3. Sql Server 常用操作
  4. 使用Facebook的SDK判斷來訪者是否已經按讃并成為本站粉絲團的成員
  5. 读取excel到数据库里面
  6. c 深度剖析 1
  7. UnityVS 2013的使用
  8. wordpress编辑器无法切换/输入
  9. 用AJAX技术聚合RSS
  10. js拖拽3D立方体旋转
  11. 【转载】CCombobox使用大全
  12. .Net IE10 _doPostBack 未定义
  13. Light oj 1030 概率DP
  14. Socket网络编程详解
  15. Redis和memcached区别须知
  16. 2019微软Power BI 每月功能更新系列——2月Power BI 新功能学习
  17. JavaScript 空间分析库——JSTS和Turf【转】
  18. C++类静态数据成员与类静态成员函数
  19. webpack8--删除dist目录,压缩分离后的CSS
  20. numpy中的reshape中参数为-1

热门文章

  1. 【bzoj5147】casino 区间dp
  2. 元素定位:selenium消息框处理 (alert、confirm、prompt)
  3. 分治FFT
  4. 洛谷 P1514 引水入城 解题报告
  5. Centos 下 error while loading shared libraries: libopencv_core.so.3.0
  6. 「Python实践」学习之路
  7. 前端PHP入门-012-回调函数[慎入]
  8. Tensorflow实现学习率衰减
  9. Error creating bean with name &#39;transactionManager&#39; defined in ServletContext resource XXX
  10. Spring Cacheable 注解不缓存null值