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--;
        }
    }
}
相关推荐
鹿角片ljp2 分钟前
最长回文子串(LeetCode 5)详解
算法·leetcode·职场和发展
逻辑驱动的ken42 分钟前
Java高频面试题:03
java·开发语言·面试·求职招聘·春招
广师大-Wzx1 小时前
一篇文章看懂MySQL数据库(下)
java·开发语言·数据结构·数据库·windows·python·mysql
野生技术架构师1 小时前
Java NIO到底是个什么东西?
java·开发语言·nio
likerhood2 小时前
简单工厂设计模式
java·ide·intellij-idea
派大星酷3 小时前
Java 调用 Kimi API 实战:实现与大模型的简单对话
java·开发语言·ai编程
猫耳球团4 小时前
IDEA与Cursor跨平台协作指南
java·ide·intellij-idea
亚历克斯神4 小时前
Java 职业发展:2026 指南
java·spring·微服务
xuhaoyu_cpp_java4 小时前
Maven学习(二)
java·经验分享·笔记·学习·maven
西门吹-禅4 小时前
java 微服务学习笔记
java·学习·微服务