二叉树的最大深度

#include<stdio.h>
#include<stdlib.h>
 //Definition for a binary tree node.
 struct TreeNode {
     int val;
     struct TreeNode *left;
     struct TreeNode *right;
 };

   //第一种写法
 int Max(int a, int b) {
     if (a > b)
         return a;
     else
         return b;
 }
 int getH(struct TreeNode* root) {
     if (root == NULL)
         return 0;
         int maxH = Max(getH(root->left), getH(root->right));
     return  maxH + 1;
 }
 int maxDepth(struct TreeNode* root){
     return getH(root);
 }

   //第二种写法
 //把二叉树看成是 根 左子树 右子树 三部分
 //深度 = 左右子树中较大的深度 + 1
int maxDepth(struct TreeNode* root) {
    if (root == NULL)
        return 0;
    //左子树深度
    int llen = maxDepth(root->left);
    //右子树深度
    int rlen = maxDepth(root->right);
    //返回二叉树深度 + 1
    return llen > rlen ? llen + 1 : rlen + 1;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

殇&璃

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

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

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

打赏作者

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

抵扣说明:

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

余额充值