145.Binary Tree Postorder Traversal

来源:互联网 发布:温州网络瘫痪 编辑:程序博客网 时间:2024/04/30 07:49

题目链接:binary-tree-postorder-traversal


import java.util.ArrayList;import java.util.List;import java.util.Stack;/** * Given a binary tree, return the postorder traversal of its nodes' values.For example:Given binary tree {1,#,2,3},   1    \     2    /   3return [3,2,1].Note: Recursive solution is trivial, could you do it iteratively?confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.OJ's Binary Tree Serialization:The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.Here's an example:   1  / \ 2   3    /   4    \     5The above binary tree is serialized as "{1,2,3,#,#,4,#,#,5}". * */public class BinaryTreePostorderTraversal {public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) {val = x;}}//67 / 67 test cases passed.//Status: Accepted//Runtime: 202 ms//Submitted: 0 minutes ago//简单的后序遍历//递归版    public List<Integer> postorderTraversal(TreeNode root) {    List<Integer> postorder= new ArrayList<Integer>();    postorderTraversal(root, postorder);    return postorder;    }    public void postorderTraversal(TreeNode root, List<Integer> postorder) {    if (root != null) {    postorderTraversal(root.left, postorder);    postorderTraversal(root.right, postorder);    postorder.add(root.val);    }    }    //    67 / 67 test cases passed.//    Status: Accepted//    Runtime: 200 ms//    Submitted: 1 minute ago    //遍历版    public List<Integer> postorderTraversal1(TreeNode root) {        List<Integer> postorder= new ArrayList<Integer>();    Stack<TreeNode> stack = new Stack<TreeNode>();        TreeNode p = root;    TreeNode q;        do {    while(p != null) {    stack.push(p);    p = p.left;    }        q = null;    while(!stack.isEmpty()) {    p = stack.pop();    if (p.right == q) {postorder.add(p.val);q = p;} else {stack.push(p);p = p.right;break;}    }        } while(!stack.isEmpty());        return postorder;    }    public static void main(String[] args) {// TODO Auto-generated method stub}}


0 0
原创粉丝点击