很常規的一道題目了
給你一個二叉樹,請你返回其按 層序遍歷 得到的節點值。 (即逐層地,從左到右訪問所有節點)。
示例
二叉樹:[3,9,20,null,null,15,7],
代碼
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<List<Integer>>levelOrder(TreeNode root)
{
List<List<Integer>>list=new ArrayList<>();
//LinkedList是可以作爲雙端隊列去使用的,從隊列尾部添加,從隊列頭部取元素
Queue<TreeNode>queue=new LinkedList<>();
if(root==null){return list;}
queue.add(root);
while(!queue.isEmpty())
{
//這個size表示的是當前層,樹節點的個數
int size=queue.size();
List<Integer>list_copy=new ArrayList<>();
while(size>0){
//每一層添加元素時,從左到右依次添加;遍歷時同樣從左往右取元素
TreeNode node=queue.poll();
list_copy.add(node.val);
if(node.left!=null){
queue.add(node.left);
}
if(node.right!=null)
{
queue.add(node.right);
}
size--;
}
list.add(new ArrayList<>(list_copy));
}
return list;
}
}