题解 | #二叉树的深度#
二叉树的深度
https://www.nowcoder.com/practice/435fb86331474282a3499955f0a41e8b
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param pRoot TreeNode类
* @return int整型
*/
void recursion(struct TreeNode* node, int* maxDepth, int* curDepth){
if(!node) return; //用于处理空树
(*curDepth)++; //当前深度+1
*maxDepth = *maxDepth > *curDepth ? *maxDepth : *curDepth; //更新最大深度
if(node->left){ //如果左子树存在,继续递归
recursion(node->left, maxDepth, curDepth);
(*curDepth)--; //递归退出,当前深度-1
}
if(node->right){
recursion(node->right, maxDepth, curDepth);
(*curDepth)--;
}
}
int TreeDepth(struct TreeNode* pRoot ) {
// write code here
int maxDepth = 0, curDepth = 0; //声明变量最大深度和当前深度。
recursion(pRoot, &maxDepth, &curDepth); //开始递归
return maxDepth;
}
查看9道真题和解析