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.
递归 Depth-first-search
/**
* 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 1 + max(maxDepth(root->left), maxDepth(root->right));
else
return 0;
}
};
另一种写法:
int maxDepth(TreeNode *root)
{
return root == NULL ? 0 : max(maxDepth(root -> left), maxDepth(root -> right)) + 1;
}
<span style="color: rgb(51, 51, 51); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; line-height: 20px; background-color: rgb(255, 255, 255);">
</span>
<span style="color: rgb(51, 51, 51); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; line-height: 20px; background-color: rgb(255, 255, 255);">
</span>
Breadth-first-search
Calculate the count of the last level.
class Solution {
public:
int maxDepth(TreeNode* root) {
if(root==NULL)
return 0;
queue<TreeNode*> q;
q.push(root);
int cnt = 0 ;
while(!q.empty()) //while(q) 错误 //while(q!=NULL) 错误
{
++cnt;
for(int i = 0,n = q.size(); i < n; i++) //for(int i = 0; i<q.size(); i++) 错误 q.size会改变
{
TreeNode *p = q.front();
q.pop();
if(p->left!=NULL)
q.push(p->left);
if(p->right!=NULL)
q.push(p->right);
}
}
return cnt;
}
};