Binary Tree Level Order Traversal I和II 层次遍历二叉树
2016-09-17 21:13
645 查看
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree
return its level order traversal as:
层次遍历二叉树,从左到右,从上到下
思路:利用两个队列分别保存当前这一层的节点和下一层的节点。当遍历某层节点时,插入下一层要遍历的节点
第二个问题是:从底层向上遍历。
再把结果添加到结果集时,把上面的res.add(currList);改为res.add(0,currList);即每次都从下标为0的位置开始插入。
For example:
Given binary tree
[3,9,20,null,null,15,7],
3 / \ 9 20 / \ 15 7
return its level order traversal as:
[ [3], [9,20], [15,7] ]
层次遍历二叉树,从左到右,从上到下
思路:利用两个队列分别保存当前这一层的节点和下一层的节点。当遍历某层节点时,插入下一层要遍历的节点
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public List<List<Integer>> levelOrder(TreeNode root) { //存放结果 List<List<Integer>> res = new ArrayList<List<Integer>>(); if (root == null) { return res; } //记录当前这一层的所有节点 LinkedList<TreeNode> currentLevel = new LinkedList<TreeNode>(); currentLevel.add(root); while (currentLevel.size() > 0) { //存储每层节点的值 List<Integer> currList = new ArrayList<Integer>(); //存储下一层所有的节点 LinkedList<TreeNode> nextLevel = new LinkedList<TreeNode>(); while (currentLevel.size() > 0) { TreeNode node = currentLevel.poll(); //如果有左右节点,那么加入到下一层队列中 if (node.left != null) { nextLevel.add(node.left); } if (node.right != null) { nextLevel.add(node.right); } currList.add(node.val); } res.add(currList); currentLevel = nextLevel; } return res; } }
第二个问题是:从底层向上遍历。
再把结果添加到结果集时,把上面的res.add(currList);改为res.add(0,currList);即每次都从下标为0的位置开始插入。
相关文章推荐
- LeetCode: 107_Binary Tree Level Order Traversal II | 二叉树自底向上的层次遍历 | Easy
- Leetcode 107 Binary Tree Level Order Traversal II 二叉树层次遍历与倒转
- 【遍历二叉树】05二叉树的层次遍历II【Binary Tree Level Order Traversal II】
- 【遍历二叉树】06二叉树曲折(Z字形)层次遍历II【Binary Tree Zigzag Level Order Traversal】
- LeetCode OJ 之 Binary Tree Level Order Traversal II (二叉树的层次遍历-二)
- leetCode解题报告之Binary Tree Level Order Traversal II,I(二叉树层次遍历)
- [Lintcode]Binary Tree Level Order Traversal II 二叉树的层次遍历 II
- 【LeetCode】BinaryTreeLevelOrderTraversal_ii 二叉树的层次遍历 II
- LeetCode: 103_Binary Tree Zigzag Level Order Traversal | 二叉树Zigzag层次遍历 | Medium
- LeetCode OJ 之 Binary Tree Level Order Traversal (二叉树的层次遍历)
- 【LeetCode-面试算法经典-Java实现】【107-Binary Tree Level Order Traversal II(二叉树层序遍历II)】
- leetcode---binary-tree-level-order-traversal-ii---树层次遍历
- Binary Tree Level Order Traversal:层次遍历二叉树,并返回每层的数值
- 102. Binary Tree Level Order Traversal (二叉树层次遍历)
- 【遍历二叉树】04二叉树的层次遍历【Binary Tree Level Order Traversal】
- LeetCode | Binary Tree Level Order Traversal II(二叉树层序遍历II)
- 【LeetCode-面试算法经典-Java实现】【107-Binary Tree Level Order Traversal II(二叉树层序遍历II)】
- [leetcode-二叉树层次遍历并统计每层节点数]--102. Binary Tree Level Order Traversal
- 103.leetcode Binary Tree Zigzag Level Order Traversal(medium)[二叉树层次遍历 栈]
- LeetCode103 BinaryTreeZigzagLevelOrderTraversal(二叉树Z形层次遍历) Java题解