题目:求二叉树的最大深度
分析:和求最小深度一样一样的。。。
答案:
/**
* Definition for binary tree
* 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 == NULL)
return 0;
else if (root->left == NULL && root->right != NULL)
return dfs(root->right) + 1;
else if (root->right == NULL && root->left != NULL)
return dfs(root->left) + 1;
else if (root->right == NULL && root->left == NULL)
return 1;
else
return dfs(root);
}
int dfs(TreeNode *node)
{
if (node->left == NULL && node->right == NULL) // is leaf
return 1;
else if (node->left == NULL)// left is null
return dfs(node->right) + 1;
else if (node->right == NULL)// right is null
return dfs(node->left) + 1;
else // both is not null
return myMax(dfs(node->left), dfs(node->right)) + 1;
}
int myMax(int a, int b)
{
if (a > b)
return a;
else
return b;
}
};