您的位置:首页 > 其它

十一第三题Binary Tree Level Order Traversal II

2015-10-01 10:14 288 查看
public class Solution {
public List<List<Integer>> levelOrderBottom(TreeNode root) {
List<List<Integer>> list = new ArrayList<List<Integer>>();
if (root == null)
return list;
List<TreeNode> mainList = new ArrayList<TreeNode>();
List<Integer> tmpList = new ArrayList<Integer>();
int curr = 0;
Stack<List<Integer>> stack = new  Stack<List<Integer>>();
mainList.add(root);
tmpList.add(root.val);
while (mainList.size() > curr) {
int tmp = mainList.size();
List<Integer> newTmpList = new ArrayList<Integer>();
for (int i = curr; i < tmp; i++)
newTmpList.add(tmpList.get(i));
stack.push(newTmpList);
while (tmp > curr) {
TreeNode node = mainList.get(curr++);
if (node.left != null) {
mainList.add(node.left);
tmpList.add(node.left.val);
}

if (node.right != null) {
mainList.add(node.right);
tmpList.add(node.right.val);
}

}
}
while (!stack.empty())
list.add(stack.pop());

return list;
}
}
思路很简单,利用层次遍历,然后利用stack先进后出的思想。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: