You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#如何使用队列实现最多到第n层的二叉树层次遍历

改造思路与实现

我们只需要在原有层次遍历逻辑的基础上增加层数计数即可,每次处理完一整层节点后更新当前层数,到达指定的最大层数后直接终止遍历就行。

改造后代码

// 新增入参maxLevel指定要打印的最大层数
void printLevelOrderUpToN(int maxLevel)
{
    // 边界校验:层数不合法或者树为空直接返回
    if (maxLevel < 1 || root == null) 
        return;
    
    Queue<Node> queue = new Queue<Node>();
    queue.Enqueue(root);
    int currentLevel = 1; // 从第一层开始计数

    while (queue.Count != 0 && currentLevel <= maxLevel) 
    {
        // 先拿到当前层的总节点数,确保只处理当前层的节点
        int currentLevelSize = queue.Count;
        
        for (int i = 0; i < currentLevelSize; i++)
        {
            Node tempNode = queue.Dequeue();
            Console.Write(tempNode.data + " "); 
            
            // 子节点入队,留给下一层处理
            if (tempNode.left != null) {
                queue.Enqueue(tempNode.left);
            } 
            if (tempNode.right != null) {
                queue.Enqueue(tempNode.right);
            }
        }
        // 处理完一层,层数计数+1
        currentLevel++;
    }
}

效果验证

你给出的示例中,传入maxLevel=3调用该方法,输出结果为1 2 3 5 6 7 8,正好是到第三层的所有节点,不会输出第四层的4和11,符合需求。

内容的提问来源于stack exchange,提问作者user989988

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 16:36:03