首页 > 代码库 > LeetCode: Binary Tree Inorder Traversal 解题报告

LeetCode: Binary Tree Inorder Traversal 解题报告

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
    /
   3
return [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.

SOL:

包括递归与非递归方法:

 1 /** 2  * Definition for binary tree 3  * public class TreeNode { 4  *     int val; 5  *     TreeNode left; 6  *     TreeNode right; 7  *     TreeNode(int x) { val = x; } 8  * } 9  */10 public class Solution {11     public List<Integer> inorderTraversal1(TreeNode root) {12         List<Integer> ret = new ArrayList<Integer>();13         rec(root, ret);14         return ret;15     }16     17     public void rec(TreeNode root, List<Integer> ret) {18         if (root == null) {19             return;20         }21         22         rec(root.left, ret);23         ret.add(root.val);24         rec(root.right, ret);25     }26     27     public List<Integer> inorderTraversal(TreeNode root) {28         List<Integer> ret = new ArrayList<Integer>();29         if (root == null) {30             return ret;31         }32         33         Stack<TreeNode> s = new Stack<TreeNode>();34         TreeNode cur = root;35         36         while (true) {37             while (cur != null) {38                 s.push(cur);39                 cur = cur.left;40             }41             42             if (s.isEmpty()) {43                 break;44             }45             46             cur = s.pop();47             ret.add(cur.val);48             49             cur = cur.right;50         }51         52         return ret;53     }54 }
View Code

 

LeetCode: Binary Tree Inorder Traversal 解题报告