僚娥 发表于 2025-6-4 09:54:09

LeetCode513. 找树左下角的值

题目链接:https://leetcode.cn/problems/find-bottom-left-tree-value/description/

题目叙述:

给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。
假设二叉树中至少有一个节点。
示例 1:


输入: root =
输出: 1示例 2:


输入:
输出: 7提示:


二叉树的节点个数的范围是
-2^31 right==NULL){            if(depth>maxdepth){                maxdepth=depth;                result=cur->val;            }            return;      }单层递归的逻辑

我们现在找到了最深层次的叶子节点,那么我们如何保证它一定是最左边的节点呢?那还不简单嘛!只需要我们处理递归的时候,优先处理左子树,不就能保证我们先处理的是左孩子了嘛!对吧,
这段逻辑的代码如下:
       //处理到叶子节点就返回
      if(cur->left==NULL&&cur->right==NULL){
            if(depth>maxdepth){
                maxdepth=depth;
                result=cur->val;
            }
            return;
      }其实,处理好了这几个边界条件,我们的代码就出来了
整体代码:

class Solution {public:    int result=0;    int maxdepth=INT_MIN;    void traversal(TreeNode*cur,int depth){      //处理到叶子节点就返回      if(cur->left==NULL&&cur->right==NULL){            if(depth>maxdepth){                maxdepth=depth;                result=cur->val;            }            return;      }       //处理到叶子节点就返回
      if(cur->left==NULL&&cur->right==NULL){
            if(depth>maxdepth){
                maxdepth=depth;
                result=cur->val;
            }
            return;
      }    }    int findBottomLeftValue(TreeNode* root) {      traversal(root,0);      return result;    }};层序遍历(迭代法)

其实,这题使用层序遍历才是最方便,最简单的做法。我们只需要处理每一层的第一个元素,然后处理到最后一层,它自然就是最后一层的左边第一个元素了,这题只需要在层序遍历的模板上面改动一点点
就可以实现了!
如果不会层序遍历的话,推荐去看看我的层序遍历的文章,里面详细讲解了层序遍历实现的过程!
层序遍历:https://www.cnblogs.com/Tomorrowland/p/18318744
class Solution {
public:
    int result=0;
    int maxdepth=INT_MIN;
    void traversal(TreeNode*cur,int depth){
      //处理到叶子节点就返回
      if(cur->left==NULL&&cur->right==NULL){
            if(depth>maxdepth){
                maxdepth=depth;
                result=cur->val;
            }
            return;
      }
            if(cur->left!=NULL){
            //先让depth++,让他处理下一层的节点
            depth++;
            traversal(cur->left,depth);
            //再让depth--,这就是回溯的过程,退到上一层的节点,再处理右边的子树
            depth--;
      }
            if(cur->right!=NULL){
            //这里也是一样的道理
            depth++;
            traversal(cur->right,depth);
            //这里也是回溯的过程
            depth--;
      }
    }
    int findBottomLeftValue(TreeNode* root) {
      traversal(root,0);
      return result;
    }
};
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

琶轮 发表于 2025-11-3 18:47:41

收藏一下   不知道什么时候能用到

幽淆 发表于 2025-11-13 17:35:48

过来提前占个楼

厂潺 发表于 2025-12-17 10:01:06

感谢分享,下载保存了,貌似很强大

勺缓曜 发表于 2025-12-18 08:20:56

懂技术并乐意极积无私分享的人越来越少。珍惜

求几少 发表于 2025-12-26 03:41:33

感谢,下载保存了

阮蓄 发表于 2026-1-13 22:28:22

谢谢分享,辛苦了

旁拮猾 发表于 2026-1-18 04:59:47

感谢,下载保存了

豌畔丛 发表于 2026-1-18 14:17:33

不错,里面软件多更新就更好了

莅耸 发表于 2026-1-19 01:53:46

懂技术并乐意极积无私分享的人越来越少。珍惜

聊账 发表于 2026-1-20 13:19:46

新版吗?好像是停更了吧。

卓卞恻 发表于 2026-1-21 07:35:53

鼓励转贴优秀软件安全工具和文档!

宛蛲 发表于 2026-1-21 13:01:49

东西不错很实用谢谢分享

陈兰芳 发表于 2026-1-22 06:13:42

感谢分享,学习下。

米榜饴 发表于 2026-1-23 08:37:49

很好很强大我过来先占个楼 待编辑

娥搽裙 发表于 2026-1-24 01:32:29

感谢分享,学习下。

王妍芳 发表于 2026-2-1 21:35:08

谢谢分享,试用一下

系味 发表于 2026-2-5 08:31:24

谢谢分享,试用一下

百杲憔 发表于 2026-2-8 01:15:08

用心讨论,共获提升!

镝赋洧 发表于 2026-2-8 12:19:05

这个有用。
页: [1] 2
查看完整版本: LeetCode513. 找树左下角的值