写完才知道自己学习都是似是而非啊,大家可以也在leecode上提交代码,纯手写,离开eclipse
第一种方式:数据结构书上的,使用栈大概思路。
1.不断将根节点的左孩子的左孩子直到为空,在这个过程入栈。
2.因为栈顶的节点的左孩子为空,所以栈顶的的节点的左子树肯定访问完毕,所以出栈后直接指向右孩子。其实这里面有个思想
迭代和递归的本质相同之处是什么?以后会写一篇我的思考。 public class Solution {
public List<Integer> preorderTraversal(TreeNode root) { ArrayList<Integer> arry=new ArrayList<Integer>();
if(root==null) return arry; Stack<TreeNode> s=new Stack<TreeNode>(); TreeNode t=root;
while(t!=null||!s.isEmpty())
{
while(t!=null)
{
arry.add(t.val);
s.push(t);
t=t.left; } if(!s.isEmpty())
{
TreeNode tn=s.pop();
t=tn.right; } }
return arry; }
}

下面这个思路,我用的dfs的非递归方式的思想http://www.cnblogs.com/hansongjiang/p/3812908.html这篇文章说的很清楚

public class Solution {
public List<Integer> postorderTraversal(TreeNode root) {
//只能使用非递归方式,来获得List
ArrayList<Integer> arry=new ArrayList<Integer>();
Stack<TreeNode> s=new Stack<TreeNode>();
s.push(root);
while(!s.isEmpty())
{ TreeNode t=s.pop();
arry.add(t.val); if(t.left!=null) s.push(t.left);
if(t.right!=null) s.push(t.right); }
return arry; }
}

非递归实现先序遍历 java leecode 提交的更多相关文章

  1. 二叉树的先序、中序、后序和中序遍历——Java实现

    package treeTraverse; /** * 定义一个树的结点类 */ public class Node { private int data; private Node leftChil ...

  2. Binary Tree Inorder Traversal-非递归实现中序遍历二叉树

    题目描述: 给定一颗二叉树,使用非递归方法实现二叉树的中序遍历 题目来源: http://oj.leetcode.com/problems/binary-tree-inorder-traversal/ ...

  3. 后续遍历 java leecode

    以前觉得后续遍历最难写,今天看了篇博客http://blog.csdn.net/sgbfblog/article/details/7773103,其实却是我们仔细比较后续遍历和先序遍历,其实后续遍历就 ...

  4. 1058FBI<二叉树,递归,后序遍历>

    问题描述 我们可以把由"0"和"1"组成的字符串分为三类:全"0"串称为B串,全"1"串称为I串,既含"0&q ...

  5. Java实现二叉树的先序、中序、后序、层序遍历(递归和非递归)

    二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的.对于二叉树,有前序.中序以及后序三种遍历方法.因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易 ...

  6. 二叉树3种递归和非递归遍历(Java)

    import java.util.Stack; //二叉树3种递归和非递归遍历(Java) public class Traverse { /******************一二进制树的定义*** ...

  7. 非递归遍历二叉树Java版的实现代码(没写层次遍历)

    直接上代码呵呵,里面有注解 package www.com.leetcode.specificProblem; import java.util.ArrayList; import java.util ...

  8. Java - 二叉树递归与非递归

    树的定义具有递归特性,因此用递归来遍历比较符合特性,但是用非递归方式就比较麻烦,主要是递归和栈的转换. import java.util.Stack; /** * @author 李文浩 * @ver ...

  9. 基于visual Studio2013解决面试题之0401非递归遍历二叉树

     题目

随机推荐

  1. PhpStorm一次性折叠所有函数或者方法

    有时候一个类实里面的方法实在太多了,要找到指定的方法很慢,我一般都是通过ctrl+F12直接显示一个弹出层,里面只有这个类的属性和方法,点击就能快速定位了.但是有时候是一个类里面找来找去,这个访问就不 ...

  2. 003.XE3包含了TPerlRegEx的单元

    使用'|'替换所有的内容 代码: program Project1; {$APPTYPE CONSOLE} uses System.SysUtils, System.RegularExpression ...

  3. python 数据类型(列表)学习笔记

    列表 创建列表: name_list = ['alex', 'seven', 'eric'] 或 name_list = list(['alex', 'seven', 'eric']) 其实今天学习的 ...

  4. Vijos P1063 迎春舞会之交谊舞 DP

    题目链接:https://vijos.org/p/1063 题意:有n(n <= 100)行,每行有2*i-1个可显字符'#'与'-',组成一个倒三角形,问由'-'组成的最大三角形的'-'的个数 ...

  5. Java 中正确使用 hashCode 和 equals 方法

    在这篇文章中,我将告诉大家我对hashCode和equals方法的理解.我将讨论他们的默认实现,以及如何正确的重写他们.我也将使用Apache Commons提供的工具包做一个实现. 目录: hash ...

  6. 关于\t

    tail -n 10000 sample_dbl.txt | python sitemap.py | sort -k 1 -t $'\t' | python sitecombiner.py > ...

  7. Memcached总结四:用ava程序连接memcached进行操作

    1. Memcached的Java环境设置 需要下载spymemcached-2.10.3.jar,并把这个jar放到java程序的classpath中才能使用memcached. 在下面的程序,假设 ...

  8. javaweb学习总结(三十四)——使用JDBC处理MySQL大数据

    一.基本概念 大数据也称之为LOB(Large Objects),LOB又分为:clob和blob,clob用于存储大文本,blob用于存储二进制数据,例如图像.声音.二进制文等. 在实际开发中,有时 ...

  9. Linux -- Ubuntu搭建java开发环境

    Steps 1 Check to see if your Ubuntu Linux operating system architecture is 32-bit or 64-bit, open up ...

  10. SharePoint 2010 Ribbon的实现

    转:http://blog.csdn.net/wang4237/article/details/5306335 SharePoint2010的页面风格发生了很大的改变,其页面风格类似于Office的视 ...