leetcode-二叉树的中序遍历

烈酒焚心 提交于 2020-01-27 00:09:33
class Solution {
    private List<Integer> retlist = new LinkedList<>();
    public List<Integer> inorderTraversal(TreeNode root) {
        //中序遍历,左臂入栈
        TreeNode cur = root;
        Stack<TreeNode> stack = new Stack<>();
        while(cur!=null || !stack.isEmpty()){
            if(cur!=null){
                stack.add(cur);
                cur = cur.left;
            }
            else{
                cur = stack.pop();
                retlist.add(cur.val);
                cur = cur.right;
            }
        }
        return retlist;
    }
}

迭代写法,核心思路就是和以往只有一个stack作为判断依据不同,这次有两个判断依据TreeNode cur和stack。

如果cur不为空,加入stack,将指针指向left,如果为空pop一个,加入返回值,然后指针指向右边

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!