[算法]树的非递归遍历

先膜一下,这个中序非递归真是秒啊 :jingku:

大佬总结的树的各种遍历

今天刷力扣刷到的

中序非递归遍历


while (stack.size()!=0||rt!=null){      //注意此处的循环判断条件。

            // 对于弹出的每个右子树节点,都要判断并且遍历其左子树节点进栈,这也是双重循环的必要性
            while(rt!=null){
                stack.push(rt);
                rt = rt.left;
            }

            if(stack.size()!=0){
                rt = stack.pop();

                rzT.right = new TreeNode(rt.val);
                rzT = rzT.right;

                if(rt.right!=null){
                    rt = rt.right;   // 右子树非空,指向右子树,然后转向上面的while对右子树的左节点进行入栈
                }else {
                    rt = null;      //这句话是精髓
                }
            }
        }
点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注