H******7 发帖数: 1728 | 1 /**
* 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 minDepth(TreeNode *root) {
if(!root) return 0;
int left = minDepth(root->left);
int right = minDepth(root->right);
if (0 == left && 0 == right)
return 1;
if (0 == left || 0 == right)
return max(left, right) + 1;
return min(left, right) + 1;
}
}; |
a****r 发帖数: 87 | 2 int minDepth(TreeNode *root) {
if(!root) return 0;
if(!root->left && !root->right) return 1;
int mL = minDepth(root->left);
int mR = minDepth(root->right);
if(mL <= 0) return mR+1;
if(mR <= 0) return mL+1;
return min(mL, mR)+1;
} |
H******7 发帖数: 1728 | 3 没有区别。
而且我的问题不是这个。
【在 a****r 的大作中提到】![](/moin_static193/solenoid/img/up.png) : int minDepth(TreeNode *root) { : if(!root) return 0; : if(!root->left && !root->right) return 1; : : int mL = minDepth(root->left); : int mR = minDepth(root->right); : : if(mL <= 0) return mR+1; : if(mR <= 0) return mL+1; :
|
c****a 发帖数: 50 | 4 同问,啥时候给recursive解法,啥时候给iterative解法,还是没有要求就直接给两
种解法 |
H******7 发帖数: 1728 | 5 /**
* 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 minDepth(TreeNode *root) {
if(!root) return 0;
int left = minDepth(root->left);
int right = minDepth(root->right);
if (0 == left && 0 == right)
return 1;
if (0 == left || 0 == right)
return max(left, right) + 1;
return min(left, right) + 1;
}
}; |
a****r 发帖数: 87 | 6 int minDepth(TreeNode *root) {
if(!root) return 0;
if(!root->left && !root->right) return 1;
int mL = minDepth(root->left);
int mR = minDepth(root->right);
if(mL <= 0) return mR+1;
if(mR <= 0) return mL+1;
return min(mL, mR)+1;
} |
H******7 发帖数: 1728 | 7 没有区别。
而且我的问题不是这个。
【在 a****r 的大作中提到】![](/moin_static193/solenoid/img/up.png) : int minDepth(TreeNode *root) { : if(!root) return 0; : if(!root->left && !root->right) return 1; : : int mL = minDepth(root->left); : int mR = minDepth(root->right); : : if(mL <= 0) return mR+1; : if(mR <= 0) return mL+1; :
|
c****a 发帖数: 50 | 8 同问,啥时候给recursive解法,啥时候给iterative解法,还是没有要求就直接给两
种解法 |
H**********h 发帖数: 99 | 9 这个用DFS做不是最优解吧?你总要把所有结点都遍历。用BFS才能避免这种情况。不过
max depth倒是无所谓。
0
/ \
1 2
\
3
\
...
\
10000000 |
k*******a 发帖数: 433 | |