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

GeeksforGeeks二叉树左视图left view代码无法输出预期结果怎么解决?

二叉树左视图代码问题排查与修复

现有代码的核心问题

  • 递归返回值未合并:你调用leftView(root->left)、leftView(root->right)后,没有把递归调用返回的结果添加到当前函数的ans数组中,最终返回的数组永远只会包含当前节点的值,更深层的结果全部丢失。
  • 逻辑覆盖缺失:现有逻辑只处理了当前节点无左子节点时走右子树的场景,但是如果左子树的高度小于右子树,右子树中更深层的左视图节点会被直接忽略,无法被采集到结果中。比如左子树只有2层,右子树有4层,那么第3、4层的左视图节点都会丢失。

正确实现思路

两种主流实现方式:

  1. 层序遍历(BFS):按层遍历二叉树,每一层取第一个节点的值加入结果数组,天然符合左视图的定义。
  2. 深度优先遍历(DFS):优先遍历左子树,遍历时携带当前深度参数,记录已经采集过结果的深度,第一次碰到某个深度的节点时,就将其值加入结果数组。

修正后的DFS实现代码

这里用更省空间的最大深度标记方案实现:

void dfs(Node* root, int level, int& maxLevel, vector<int>& ans) {
    if (root == nullptr) return;
    // 首次访问该深度,加入结果
    if (level > maxLevel) {
        ans.push_back(root->data);
        maxLevel = level;
    }
    // 优先遍历左子树,保证同层左节点先被访问
    dfs(root->left, level + 1, maxLevel, ans);
    dfs(root->right, level + 1, maxLevel, ans);
}

vector<int> leftView(Node *root) {
    vector<int> ans;
    int maxLevel = -1;
    dfs(root, 0, maxLevel, ans);
    return ans;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:27:04