Leetcode之二叉树的非递归遍历及leetcode终结 二叉树的非递归遍历
      01 August 2014
    
    二叉树的非递归遍历及leetcode终结
Leetcode刷完了,许多没记,总体面试中遇到太难的算法题。另外Leetcode中的题目一定要用最优的代码最简洁的代码,不然就是白刷。
##前序
	public class Solution {
	    public List
##中序
public class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> re = new ArrayList<Integer>();
        TreeNode stack[]=new TreeNode[1000];
        int top=0;
        TreeNode p = root;
        while(top>0|| p!=null)  
        {  
            if(p!=null)  
            {  
                stack[top++]=p;
                p= p.left;  
            }else{  
                p = stack[--top];  
                re.add(p.val);  
                p = p.right;  
            }  
        }  
        return re;
    }
}
##后序
public class Solution {
    public List<Integer> postorderTraversal(TreeNode root) {
       List<Integer> l = new ArrayList<Integer>();
        TreeNode p = root;
        TreeNode []stack = new TreeNode[1000];
        int tail=0;
        int top =0;
        if(root!=null)
            stack[top++]=root;
        while(top>0)
        {
            /* 后序遍历可以看成右边再左边的前序遍历的结果的逆序。 */
            l.add(0,p.val);
            if(p.left!=null)
                stack[top++]=p.left;
            if(p.right!=null)
                 stack[top++]=p.right;
            p=stack[--top];
        }
        return l;
    }
}
blog comments powered by Disqus