题目:
Given a binary tree, find its maximum depth.
The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.
理解:
给定一个二叉树,找到它的最大深度。
二叉树的最大深度定义为从树根节点到最远叶子节点的最长路径上节点的数目。
这道题的思路非常简单,主要是应用递归的思想:
(1)若给定二叉树为空,返回0;否则转(2);
(2)递归计算左子树的最大深度以及右子树的最大深度;
(3)左右子树中较大的最大深度+1为最终的最大深度,返回这个最大深度作为最终结果。
代码:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int maxDepth(TreeNode* root) {
if(!root)
return 0;
int maxLeftDepth=maxDepth(root->left);
int maxRightDepth=maxDepth(root->right);
return maxLeftDepth>maxRightDepth?maxLeftDepth+1:maxRightDepth+1;
}
};