Binary Tree Postorder Traversal - Leetcode

来源:互联网 发布:阿里云下载 编辑:程序博客网 时间:2024/06/04 18:22

/** * 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> s = new Stack<>();List<Integer> result = new ArrayList<>();TreeNode pointer = root, prev = null;do {while (pointer != null) {s.push(pointer);pointer = pointer.left;}prev = null;while (!s.empty()) {pointer = s.pop();if (pointer.right == prev) {result.add(pointer.val);prev = pointer;} else {s.push(pointer);pointer = pointer.right;break;}}} while (!s.empty());return result;}}

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].


0 0