144、94、145 迭代法统一写法 + 二叉树前中后序遍历

144 递归 + 中序遍历

题目描述

在这里插入图片描述

算法思路说明

为了解决遍历顺序和处理顺序不一致的问题,将遍历过但是暂不处理的打上标记,碰到带标记的则将标记与节点本身出栈

对应JAVA代码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cuSBrZrc-1617673217267)(en-resource://database/2143:0)]

class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> result = new ArrayList<Integer>();
        Deque <TreeNode> st = new LinkedList<TreeNode>();
        TreeNode node = root;
        if(node != null) {st.offerFirst(node);}
        while(!st.isEmpty()){
            node = st.pollFirst();
            if(node != null){ // 前、后序遍历在这里调整下顺序即可
                if(node.right != null) {st.offerFirst(node.right);}
                st.offerFirst(node);
                st.offerFirst(null); // 使用null值作为标记
                if(node.left != null) {st.offerFirst(node.left);}
            } else{
                node = st.pollFirst();
                result.add(node.val);
            }
        }
        return result;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值