由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - min depth binary tree用recursive解法一般能过关麽?
相关主题
Flatten Binary Tree to Linked List的recursive解法帮我看一下5行代码
请教两道F面试题的follow upFB面经
leetcode过的一代工程师mirror 一个binary tree, 用non-recursive解法怎么做
Interview question::问个打印树的问题
问一个题目Uni_value subtree problem
10分钟前的T家电面面经写了个symmetric tree的stack based iterative实现,有个bug
再问个C++的基础问题(in order traversal)求问一个Java问题
一个题:给定一个节点,找right neighbor这个inorder traversal 有错嘛,为什么leetcode 总报memory limit exceed?
相关话题的讨论汇总
话题: treenode话题: left话题: mindepth话题: right话题: root
进入JobHunting版参与讨论
1 (共1页)
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 的大作中提到】
: 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 的大作中提到】
: 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
10
要递归就DFS,要迭代就BFS
1 (共1页)
进入JobHunting版参与讨论
相关主题
这个inorder traversal 有错嘛,为什么leetcode 总报memory limit exceed?问一个题目
热腾腾的 LinkedIn 电面题攒RP10分钟前的T家电面面经
[面试题] 如何打印一个二叉树level by level?再问个C++的基础问题(in order traversal)
MS onsite 面经一个题:给定一个节点,找right neighbor
Flatten Binary Tree to Linked List的recursive解法帮我看一下5行代码
请教两道F面试题的follow upFB面经
leetcode过的一代工程师mirror 一个binary tree, 用non-recursive解法怎么做
Interview question::问个打印树的问题
相关话题的讨论汇总
话题: treenode话题: left话题: mindepth话题: right话题: root