Maximum Depth of Binary Tree leetcode
2014-08-13 09:06
78 查看
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
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;
}
};
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;
}
};
相关文章推荐
- LeetCode[Day 1] Two Sum 题解
- LeetCode[Day 2] Median of Two Sorted Arrays 题解
- LeetCode[Day 3] Longest Substring Without... 题解
- LeetCode [Day 4] Add Two Numbers 题解
- LeetCode [Day 5] Longest Palindromic Substring 题解
- LeetCode [Day 6] ZigZag Conversion 题解
- Generate Parentheses
- LeetCode总结
- [LeetCode] Partition List
- [LeetCode] Next Permutation
- [LeetCode]Copy List with Random Pointer
- [LeetCode]Reverse Linked List
- leetcode 虐我篇之(一)Reverse Words in a String
- leetcode 虐我篇之(二) Two Sum
- leetcode 虐我篇之(三)Remove Duplicates from Sorted List
- leetcode 虐我篇之(四)Remove Duplicates from Sorted List II
- leetcode 虐我篇之(五)Remove Duplicates from Sorted Array
- leetcode 虐我篇之(六)Remove Duplicates from Sorted Array II
- leetcode 虐我篇之(七)Single Number
- leetcode 虐我篇之(八)Reverse Integer