lintcode68二叉树的后序遍历

思路:按照顺序入栈,然后弹出就好。

import java.util.ArrayList;
import java.util.List;
import java.util.Stack;

/**
 * Create by yangshunfan
 * 2018/4/4 23:50
 * 二叉树的后序遍历
 */
public class Test68  {
    public List postorderTraversal(TreeNode root) {
        // write your code here
        List result = new ArrayList<>();
        if(root == null)
            return result;
        Stack stack = new Stack();
        stack.push(root);   //首先将根节点压栈
        while(!stack.isEmpty()) {
            TreeNode ele = stack.pop(); //首先出栈的为根节点,其后先出右子节点,后出左子节点
            if(ele.left != null)
                stack.push(ele.left);  //将左子节点压栈
            if(ele.right != null) {
                stack.push(ele.right); //将右子节点压栈
            }
            result.add(0, ele.val); //因为出栈顺序为“根右左”,所以需要每次将元素插入list开头
        }
        return result;
    }
}

你可能感兴趣的:(Lint-Code)