【力扣每日一题】力扣145二叉树的后序遍历

题目来源

力扣145二叉树的后序遍历

题目概述

给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。

思路分析

使用迭代和递归方法都可以实现二叉树的后序遍历。

代码实现

java实现

public class Solution {
    public List postorderTraversal(TreeNode root) {
        List res = new ArrayList<>();
        Stack stack = new Stack<>();
        TreeNode last = null;
        while (root!= null || !stack.isEmpty()) {
            while (root != null) {
                stack.push(root);
                root = root.left;
            }
            root = stack.pop();
            if (root.right == null || root.right == last) {
                res.add(root.val);
                last = root;
                root = null;
            }else {
                stack.push(root);
                root = root.right;
            }
        }
        return res;
    }
}

c++实现

class Solution {
public:
    vector res;
    vector postorderTraversal(TreeNode* root) {
        if (root == nullptr) {
            return res;
        }
        postorderTraversal(root->left);
        postorderTraversal(root->right);
        res.push_back(root->val);
        return res;
    }
}

你可能感兴趣的:(leetcode,算法,java,c++)