题目:
输入一颗二叉树的根节点,求该数的深度。从根节点到叶节点依次经过的节点形成一条路径,最长的路径的长度为树的深度。
思路:
这个题其主要就是理解树的深度,如果一棵树只有一个节点,那么它的深度为1。如果根节点只有左子树而没有右子树,那么树的深度就是左子树的深度加上根节点1。同理有左右子树的时候就是比较左右子树的深度,然后较大者深度再加一。用递归的方法很容易实现。
代码实现:
int maxDepth(struct TreeNode* root){
if (root == NULL) {
return 0;
}
int leftDepth = maxDepth(root->left);
int rightDepth = maxDepth(root->right);
return 1 + fmax(leftDepth, rightDepth);
}