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.
Anwser 1 : DFS
class Solution {
public:
int maxDepth(TreeNode *root) {
if(root == NULL)
return 0;
int left = maxDepth(root->left);
int right = maxDepth(root->right);
return (left>right? left: right)+1;
}
};
Anwser 2 : BFS in queue
class Solution {
public:
int maxDepth(TreeNode *root) {
if(root == NULL)
return 0;
queue<TreeNode*> q;
q.push(root);
int count = 1;
int depth = 0;
while(!q.empty()) {
TreeNode* tmp = q.front();
q.pop();
count--;
if(tmp->left != NULL)
q.push(tmp->left);
if(tmp->right != NULL)
q.push(tmp->right);
if(count == 0) {
depth++;
count = q.size();
}
}
return depth;
}
};
Minimum Depth of Binary Tree
Given a binary tree, find its minimum depth.
The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.
递归:
class Solution {
public:
int minDepth(TreeNode *root) {
if(root == NULL)
return 0;
int left = minDepth(root->left);
int right = minDepth(root->right);
if(left*right != 0)
return (left<right? left:right)+1;
if(left == 0)
return right+1;
if(right == 0)
return left+1;
}
};