Skip to content
本页目录

0102-二叉树的层序遍历

https://leetcode.cn/problems/binary-tree-level-order-traversal

给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。

示例:

二叉树:[3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

返回其层序遍历结果:

[
  [3],
  [9,20],
  [15,7]
]

思路

层序遍历(广度优先) 使用 Queue 逐步展开

参考代码

csharp
public class Solution {
    public IList<IList<int>> LevelOrder(TreeNode root) {
        IList<IList<int>> arr = new List<IList<int>>();
        Queue<TreeNode> queue = new Queue<TreeNode>();
        if(root != null){
            queue.Enqueue(root);
            while(queue.Count > 0){
                List<int> list = new List<int>();
                int count = queue.Count;
                for(int i=0; i<count; i++){
                    TreeNode node = queue.Dequeue();
                    list.Add(node.val);
                    if(node.left != null){
                        queue.Enqueue(node.left);
                    }
                    if(node.right != null){
                        queue.Enqueue(node.right);
                    }
                }
                arr.Add(list);
            }
        }
        return arr;
    }
}

Released under the MIT License.