题意
基本的求二叉树的深度题
题解
1:判断特殊情况,根节点为NULL,函数返回深度为0
2:第二种特殊情况,只有根节点(不判断也可)
3:递归调用求出左子树和右子树的深度
最后返回二者大的深度+根节点深度1
C语言
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
int maxDepth(struct TreeNode* root) {
if(root == NULL)
return 0;
//if((root->left == NULL) && (root->right == NULL))
// return 1;
int ldepth = maxDepth(root->left);
int rdepth = maxDepth(root->right);
return ldepth > rdepth ? (ldepth+1) : (rdepth+1);
}
Java语言
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public int maxDepth(TreeNode root) {
if(root == null)
return 0;
int ldepth = maxDepth(root.left);
int rdepth = maxDepth(root.right);
return ldepth > rdepth ? (ldepth+1) : (rdepth+1);
}
}