首页 > 其他分享 >02_二叉树的迭代遍历

02_二叉树的迭代遍历

时间:2023-11-10 09:33:39浏览次数:35  
标签:02 node cur 迭代 result null root stack 二叉树

二叉树的迭代遍历

// 前序遍历顺序:中-左-右,入栈顺序:中-右-左
class Solution {
    public List<Integer> preorderTraversal(TreeNode root) {
        List<Integer> result = new ArrayList<>();
        if (root == null){
            return result;
        }
        Stack<TreeNode> stack = new Stack<>();
        stack.push(root);
        while (!stack.isEmpty()){
            TreeNode node = stack.pop();
            result.add(node.val);
            if (node.right != null){
                stack.push(node.right);
            }
            if (node.left != null){
                stack.push(node.left);
            }
        }
        return result;
    }
}

// 中序遍历顺序: 左-中-右 入栈顺序: 左-右
class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> result = new ArrayList<>();
        if (root == null){
            return result;
        }
        Stack<TreeNode> stack = new Stack<>();
        TreeNode cur = root;
        while (cur != null || !stack.isEmpty()){
           if (cur != null){
               stack.push(cur);
               cur = cur.left;
           }else{
               cur = stack.pop();
               result.add(cur.val);
               cur = cur.right;
           }
        }
        return result;
    }
}

// 后序遍历顺序 左-右-中 入栈顺序:中-左-右 出栈顺序:中-右-左, 最后翻转结果
class Solution {
    public List<Integer> postorderTraversal(TreeNode root) {
        List<Integer> result = new ArrayList<>();
        if (root == null){
            return result;
        }
        Stack<TreeNode> stack = new Stack<>();
        stack.push(root);
        while (!stack.isEmpty()){
            TreeNode node = stack.pop();
            result.add(node.val);
            if (node.left != null){
                stack.push(node.left);
            }
            if (node.right != null){
                stack.push(node.right);
            }
        }
        Collections.reverse(result);
        return result;
    }
}

标签:02,node,cur,迭代,result,null,root,stack,二叉树
From: https://www.cnblogs.com/codingbao/p/17823381.html

相关文章

  • 2023.11.8 高斯消元记录
    2021ICPC沈阳I题https://link.zhihu.com/?target=https%3A//ac.nowcoder.com/acm/contest/24346/I2020ICPC济南A题https://ac.nowcoder.com/acm/contest/10662/A高斯消元只要构造出增广矩阵,求解就很简单了.对本题来说,矩阵乘开后,新矩阵的列向量,就是B*C的列向量.......
  • 「Log」2023.11.9 小记
    序幕\(\text{7:00}\):起晚了到校(不是为啥这个点还没人),整整博客。接着做点CF题,等会模拟赛。\(\text{7:30}\):准时开题。看来是JOI专场,题面还是有点意思的。(实际上是JOISC2015,赛后知道的。)T1感觉有点神秘先跳过。T2貌似除了最后一个字母都是固定的,而且\(k\)很小,直接维......
  • 2023年11月9日每日随笔
    今天上了很多课,学习了组合模式和装饰模式,同时对C#进行学习,主要刚刚有点兴趣,趁着这股劲赶紧把我的这部分功能写完,今天把界面搭建完了,部分连上了数据库,还需要进行优化,笔记不能每一次都查一遍数据库,也不是不行,反正是作业,数据应该不大,页面: ......
  • 2023年11月9日总结
    这里观看体验更佳总结一眨眼,一天又过去了嘿嘿。今天鸽子回归,热烈祝贺!鼓掌!今天是做的练习赛,早上三道题,一道矩阵快速幂+拓展欧几里德,还有两道模拟。感觉都挺简单的,就是最后一道题的数据把我恶心到了。题目说链的长度是偶数,结果样例有奇数就算了,还有个点只有一个点的链,把我的判断......
  • 2023.11.9——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.mybatis明日计划:学习......
  • 【re】[广东省大学生攻防大赛 2022]pyre --爆破字符
    附件下载下来,解压,发现是一个python打包的exe这里用pyinstxtractor进行反编译,后面会得到一个文件夹,里面有一个pyc文件这里可以用进行网站进行对pyc进行反编译:在线Pythonpyc文件编译与反编译(lddgo.net)反编译的python结果如下:#Visithttps://www.lddgo.net/string/pyc-com......
  • 【专题】2023智能汽车发展趋势洞察报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=34219原文出处:拓端数据部落公众号至2025年,智能网联汽车产业规模将突破5000亿。预计具备L2及以上自动驾驶能力的车型销量将突破千万级,渗透率将跃升至42.9%。阅读原文,获取专题报告合集全文,解锁文末56份智能汽车相关行业研究报告。智能汽车发展水平......
  • 【专题】2022-2023中国跨境出口B2C电商报告PDF合集分享(附原数据表)
    报告链接:http://tecdat.cn/?p=32805原文出处:拓端数据部落公众号全球疫情的爆发对于全球经济和消费市场都带来了很大的冲击,特别是在消费者的消费行为和零售市场格局方面发生了重大变革。同时由于全球供应链的重新调整,产业分化现象也加速出现。中国跨境电商已经历了十年以上的发......
  • 重磅!大厂2023最新全套面试题,简直就是拿Offer的神器
    前言大厂的面试一直都是风向标,动态必须关注!想要高效迅速的拿到心仪的offer,一定要从面试官的角度出发,提前做好功课,了解市场的最新风向。我在和几位大佬详细沟通之后,终于整理出了这份最新的《2023Android面试收割指南》,内容涵盖各大厂最新面试题合集,部分题目还是有点难度的,希望大家能......
  • Adobe Photoshop 2023最新激活(附图文教程)
    介绍Photoshop软件是一个非常强大的数字图像处理和编辑软件,具有直观易用的用户界面,各种图像编辑和处理工具,各种图层和蒙版功能,各种滤镜和插件。无论是初学者还是有经验的设计师都可以使用该软件轻松地处理、修改和创建各种类型的图像,以满足不同领域的需求。安装步骤下载地址  htt......