94.Binary Tree Inorder Traversal

来源:互联网 发布:萧山网络问政南阳 编辑:程序博客网 时间:2024/05/22 15:46

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


/** * Given a binary tree, return the inorder traversal of its nodes' values.For example:Given binary tree {1,#,2,3},   1    \     2    /   3return [1,3,2].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 BinaryTreeInorderTraversal {public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) {val = x;}}//67 / 67 test cases passed.//Status: Accepted//Runtime: 216 ms//Submitted: 1 minute ago//简单的中序遍历//递归版    public List<Integer> inorderTraversal(TreeNode root) {    List<Integer> inorder= new ArrayList<Integer>();    inorderTraversal(root, inorder);    return inorder;    }    public void inorderTraversal(TreeNode root, List<Integer> inorder) {    if (root != null) {    inorderTraversal(root.left, inorder);    inorder.add(root.val);    inorderTraversal(root.right, inorder);    }    }        //遍历版    public List<Integer> inorderTraversal1(TreeNode root) {        List<Integer> inorder= new ArrayList<Integer>();        Stack<TreeNode> stack = new Stack<TreeNode>();        TreeNode p = root;        while(!stack.isEmpty() || p != null) {        if(p != null) {    stack.add(p);    p = p.left;    } else {    TreeNode node = stack.pop();    inorder.add(node.val);    p = node.right;}    }    return inorder;    }    public static void main(String[] args) {// TODO Auto-generated method stub}}


0 0
原创粉丝点击