找树左下角的值 || 实际上在找最深的节点的值 || 求深度就用先序遍历

思路

首先,定义最大深度为 INT_MIN ,以及最大深度时的节点值res为0;
其次,先序遍历,在访问每个节点时,都判断是否是叶节点,如果是叶节点,在判断此时节点的深度是否大于前一次状态的最大深度,如果满足,更新最大深度,以及最大深度的节点的val。
最后输出res即可。其实如果用先序遍历,算是求深度的一个拓展,算是简单题的一种了。

复杂度

  • 时间复杂度: O(n) 
  • 空间复杂度: O(1)
    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     struct TreeNode *left;
     *     struct TreeNode *right;
     * };
     */
    
    void preorder(struct TreeNode* root,int depth,int* maxdepth,int* res){
        if(root == NULL){
            return ;
        }
        if(root -> left == NULL && root -> right == NULL){
            if(depth > *maxdepth){
                *maxdepth = depth;
                *res = root -> val;
            }
        }  
        preorder(root -> left,depth + 1, maxdepth,res);
        preorder(root -> right,depth + 1, maxdepth,res);
    }
    
    
    int findBottomLeftValue(struct TreeNode* root) {
        int maxdepth = INT_MIN;
        struct TreeNode* maxroot = root;
        int res = 0;
        preorder(root,1,&maxdepth,&res);
        return res;
    }
    
    作者:睡个好觉
    链接:https://leetcode.cn/problems/find-bottom-left-tree-value/solutions/3623348/zhao-shu-zuo-xia-jiao-de-zhi-shi-ji-shan-y9bo/
    来源:力扣(LeetCode)
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

求深度:先序遍历(根左右); 求高度: 后序遍历(左右根)

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包

    打赏作者

    睡个好觉(努力提升自己版)

    你的鼓励将是我创作的最大动力

    ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
    扫码支付:¥1
    获取中
    扫码支付

    您的余额不足,请更换扫码支付或充值

    打赏作者

    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值