当前位置: 首页 > article >正文

力扣 LeetCode 145. 二叉树的后序遍历(Day6:二叉树)

解题思路:

方法一:递归(左右中)

class Solution {
    List<Integer> res = new ArrayList<>();

    public List<Integer> postorderTraversal(TreeNode root) {
        recur(root);
        return res;
    }

    public void recur(TreeNode root) {
        if (root == null) return;
        recur(root.left);
        recur(root.right);
        res.add(root.val);
    }
}

方法二:迭代(非递归法)

也就是用栈

重点弄懂前序是怎么用栈来实现的(以前序为基准,推出后序和中序)

因为栈是先进后出,所以实现前序,是中右左,先放右节点,再放左节点

后序迭代的推导:

正常情况下,前序是中左右(迭代法时栈用中右左),后序是左右中,那么:

中左右->中右左->左右中

先交换语句,再整体调用Collections.reverse(),就可以得到后序的迭代法

class Solution {
    public List<Integer> postorderTraversal(TreeNode root) {
        Deque<TreeNode> stack = new ArrayDeque<>();
        List<Integer> res = new ArrayList<>();
        if (root == null) return res;

        stack.push(root);
        while (!stack.isEmpty()) {
            TreeNode node = stack.pop();
            res.add(node.val);

            if (node.left != null) stack.push(node.left);
            if (node.right != null) stack.push(node.right);
        }
        Collections.reverse(res);
        return res;
    }
}


http://www.kler.cn/a/398603.html

相关文章:

  • 从建立TRUST到实现FAIR:可持续海洋经济的数据管理
  • 【实验11】卷积神经网络(2)-基于LeNet实现手写体数字识别
  • 跟我学C++中级篇——RAII
  • 营销手段的变革:开源 AI 智能名片与 S2B2C 商城小程序在新趋势下的机遇与挑战
  • 以太坊系地址衍生算法分层确定性生成逻辑
  • 24 年第十届数维杯国际数模竞赛赛题浅析
  • 读书笔记《Lean In 向前一步》
  • SpringBoot接收前端传递参数
  • C++设计思想-001-设计模式-单例模式
  • Controller Baseband commands速览
  • Mac上详细配置java开发环境和软件(更新中)
  • 跨平台WPF框架Avalonia教程 十四
  • python编写一个自动清理三个月以前的邮件脚本
  • 攻防世界-mfw
  • antd table表格设置最小宽度,列宽等比例显示
  • 26-ES集群搭建、身份认证配置
  • 【leetcode】704. 二分查找
  • 力扣 多数元素-169
  • 基于python Django的boss直聘数据采集与分析预测系统,爬虫可以在线采集,实时动态显示爬取数据,预测基于技能匹配的预测模型
  • css三角制作(二十课)
  • 【html网页页面002】html+css制作实现家乡江苏网页主题制作(5页面附效果图)
  • 2024-11-17 -MATLAB三维绘图简单实例
  • 发布 npm 包推送到官方库时 提示 connect ETIMEDOUT
  • 24首届数证杯(流量分析部分)
  • EM算法与高斯混合聚类:理解与实践
  • QT使用libssh2库通过密匙实现sftp协议上传文件