题目:
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回它的最大深度 3 。
思路:
设置变量ld,rd
先从根节点的左边出发找到最深的叶子节点,存在左节点ld+1,存在右节点rd+1返回较大值。右边同理最后比较得出最大值
leetcode代码:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
int maxDepth(struct TreeNode* root){
int ld=0,rd=0;
if(root)
{
ld=maxDepth(root->left)+1;
rd=maxDepth(root->right)+1;
}
return ld>=rd?ld:rd;
}
leetcode标准答案:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
int maxDepth(struct TreeNode* root){
int maxNum = 0;
int leftNum = 0;
int rightNum = 0;
if (root != NULL) {
maxNum = 1;
}
else {
return maxNum;
}
if (root->left != NULL) {
leftNum = maxDepth(root->left);
}
if (root->right != NULL) {
rightNum = maxDepth(root->right);
}
if (leftNum >= rightNum) {
maxNum += leftNum;
}
else {
maxNum += rightNum;
}
return maxNum;
}