题解 | #二叉树的最大深度#

二叉树的最大深度

https://www.nowcoder.com/practice/8a2b2bf6c19b4f23a9bdb9b233eefa73

C语言

void recursion(struct TreeNode* node, int *maxDepth){

    static int tmpDepth = 1;    //初始化当前深度为1,根节点

    if(*maxDepth < tmpDepth) *maxDepth = tmpDepth;  //如果当前深度大于最大深度,则更新最大深度

    if(!node->left && !node->right){                //如果该节点的左右子节点都不存在,则该节点是叶子节点,返回并深度-1

        tmpDepth--;

        return;

    }

    if(node->left) {            //如果左子节点存在,深度+1并递归

        tmpDepth++;

        recursion(node->left, maxDepth);

    }

    if(node->right) {

        tmpDepth++;

        recursion(node->right, maxDepth);

    }

    tmpDepth--;                 //该节点左右子节点遍历完,深度-1并返回到上一次调用递归的位置。

}

int maxDepth(struct TreeNode* root ) {

    // write code here

    static int maxDepth = 0;        //最大深度初始为0

    if(root)    recursion(root, &maxDepth);     //根节点不存在则返回0

    return maxDepth;

}

全部评论

相关推荐

KPLACE:首先是板面看起来不够,有很多奖,比我厉害。项目要精减,大概详细描述两到三个,要把技术栈写清楚,分点,什么算法,什么外设,怎么优化,不要写一大堆,分点,你写上去的目的,一是让别人知道你做了这个知识点,然后在面试官技术面的时侯,他知道你会这个,那么就会跟你深挖这个,然后就是个人评价改为专业技能
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务