给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
返回它的最大深度 3
思路:使用递归的方式,当前树的深度肯定是左子树的深度和右子树的深度中较大的那一个的值加上1获得的
具体递归代码如下
class Solution {
public:
int maxDepth(TreeNode* root) {
//如果为NULL,则表示当前没有高度,直接返回零
if (root == null){
return 0;
}
//返回左子树的高度
int left_depth = maxDepth(root->left);
//返回右子树的高度
int right_depth = maxDepth(root->right);
//最后数的高度是左子树的高度和右子树的高度中较大的那一个再加上1
return (left_depth > right_depth? left_depth : right_depth) + 1 ;
}
};
但是这种方法会消耗大量的时间和空间,为了节省时间