码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode

时间:2015-04-22 20:38:31      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:

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.


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
         5
The above binary tree is serialized as "{1,2,3,#,#,4,#,#,5}".
题意:树的中序遍历。

思路:非递归形式,利用栈

/**
 * Definition for binary tree
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> ans = new ArrayList<Integer>();
		if (root == null) return ans;
		
		Stack<TreeNode> stack = new Stack<TreeNode>();
		TreeNode cur = root;
		do {
			if (cur != null) {
				stack.push(cur);
				cur = cur.left;
			} else {
				cur = stack.peek();
				stack.pop();
				ans.add(cur.val);
				cur = cur.right;
			}
		} while (!stack.empty() || cur != null);
		
		return ans;
    }
}



LeetCode

标签:

原文地址:http://blog.csdn.net/u011345136/article/details/45200273

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!