给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
返回它的最大深度 3 。
- 我的题解
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
int getthedepth(struct TreeNode* root){
int depth1;
int depth2;
int max;
if(root!=NULL){
depth1=getthedepth(root->left)+1;
depth2=getthedepth(root->right)+1;
if(depth1<=depth2){
max=depth2;
}
else{
max=depth1;
}
}
else{
max=0;
}
return max;
}
int maxDepth(struct TreeNode* root){
return getthedepth(root);
}
简简单单一个递归,这个和我昨天遇到的题有点像,不过昨天的是N叉树,这道题简单一些。首先明确二叉树这一个简单的结构就清晰了,只有左右两个子树也比较好递归。
非空判断肯定是要放在第一位的,因为二叉树有两个子树,因此要有两个深度,深度随左右分支进行递归。在递归结束之后还要刀下面的比较语句,取到最大的深度进行返回。
其中
else{
max=0;
}
是用来给最后一次递归进行收尾的,因为递归到最后是NULL,NULL的深度是0。