使用迭代法对二叉树进行后序遍历——Leetcode系列(六)

来源:互联网 发布:琅琊榜细节 知乎 编辑:程序博客网 时间:2024/06/05 01:09

Given a binary tree, return the postorder traversal of its nodes' values.

For example:
Given binary tree {1,#,2,3},

   1    \     2    /   3

return [3,2,1].

Note: Recursive solution is trivial, could you do it iteratively?

My Answer

<span style="font-size:14px;">/** * Definition for binary tree * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public List<Integer> postorderTraversal(TreeNode root) {        Stack<TreeNode> stack = new Stack<TreeNode>();        List<Integer> list = new ArrayList<Integer>();        if(root == null){            return list;        }        stack.push(root);        while(!stack.empty()){            TreeNode top = stack.pop();            if(top.left == null && top.right == null){                list.add(top.val);            }else{                stack.push(new TreeNode(top.val));                if(top.right != null){                    stack.push(top.right);                }                if(top.left != null){                    stack.push(top.left);                }            }        }        return list;    }}</span>

题目来源:https://oj.leetcode.com/problems/binary-tree-postorder-traversal/

0 0
原创粉丝点击