Java | Leetcode Java题解之第145题二叉树的后序遍历

题目:

题解:

java 复制代码
class Solution {
    public List<Integer> postorderTraversal(TreeNode root) {
        List<Integer> res = new ArrayList<Integer>();
        if (root == null) {
            return res;
        }

        TreeNode p1 = root, p2 = null;

        while (p1 != null) {
            p2 = p1.left;
            if (p2 != null) {
                while (p2.right != null && p2.right != p1) {
                    p2 = p2.right;
                }
                if (p2.right == null) {
                    p2.right = p1;
                    p1 = p1.left;
                    continue;
                } else {
                    p2.right = null;
                    addPath(res, p1.left);
                }
            }
            p1 = p1.right;
        }
        addPath(res, root);
        return res;
    }

    public void addPath(List<Integer> res, TreeNode node) {
        int count = 0;
        while (node != null) {
            ++count;
            res.add(node.val);
            node = node.right;
        }
        int left = res.size() - count, right = res.size() - 1;
        while (left < right) {
            int temp = res.get(left);
            res.set(left, res.get(right));
            res.set(right, temp);
            left++;
            right--;
        }
    }
}
相关推荐
YDS8295 分钟前
DeepSeek RAG&MCP + Agent智能体项目 —— 环境搭建和项目初始化
java·springboot·agent·rag·deepseek
ChoSeitaku6 分钟前
04.数组
java·开发语言·数据结构
float_com9 分钟前
【java进阶】------ 多线程【实际案例分析】
java
用户298698530149 分钟前
Java 中的 Word 变量管理:添加、统计、获取与删除
java·后端
郭龙_Jack14 分钟前
Java 17 到 Java 25:LTS 升级的全面收益与迁移指南
java·开发语言·python
要开心吖ZSH20 分钟前
Java AI Agent 开发中的 RAG 实现方案及小白入门指南
java·ai·agent·rag
掉鱼的猫20 分钟前
Java 流程编排新范式 Solon Flow:一个引擎,七种节点,覆盖规则/任务/工作流/AI 编排全场景
java·workflow
Aaa1111144332 分钟前
四类地址 逻辑地址 线性地址 虚拟地址 物理地址
java
小则又沐风a33 分钟前
深入了解进程概念 第二章
java·linux·服务器·前端
程序猿进阶35 分钟前
OpenClaw Mac 安装教程
java·macos·ai·架构·agent·openclaw