由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - careercup 150 4.1 balanced tree 有错?
相关主题
如何计算recursion的空间复杂度Google Intern 面试 【请教】
菜鸟问一道java题目,check balanced binary treecareercup150的OOP啥时候出C++ 版啊
问一个leetcode上面binary tree的题目面试题分享及感想
关于phone screeningCC4.1 isBalanced BT 答案的复杂度是不是错的?
哪些题/算法/结构应该练和多练Amazon on-campus interview:为何整个过程这么短?
careercup150上的题是什么难度?电面结束,送包子求祝福!
请问我写的这个判断tree是否balance的code有问题么?哪里有careercup150题下载么?
非CS转码工,准备的好痛苦CS 微软 我的求职小结
相关话题的讨论汇总
话题: depth话题: treenode话题: root话题: careercup话题: null
进入JobHunting版参与讨论
1 (共1页)
A******g
发帖数: 612
1
题目:判断一个binary tree 是否平衡,平衡的定义是任意node,左边subtree和右边
subtree的高度相差不超过1。Careercup150有这道题,用了书上的解法。没有通过全部
测试。觉得careercup解法好像不对。
比如这个
{1,2,3,4,5,#,6,7}
1
/ \
2 3
/\ \
4 5 6
/
7
Careercup是用max depth - min depth = 3-1=2 不平衡
主要是上面的minDepth算法会把1右边substree算成2
请大牛指点!
careercup书上解法:
/**
* 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 max_depth(TreeNode *root) {
if (root==NULL)
return 0;
return 1+max( max_depth(root->left), max_depth(root->right));
}


int min_depth(TreeNode *root) {
if (root==NULL)
return 0;
return 1+min( min_depth(root->left), min_depth(root->right));
}

bool isBalanced(TreeNode *root) {
// Start typing your C/C++ solution below
// DO NOT write int main() function

return max_depth(root)-min_depth(root) <= 1;
}
};
l*********8
发帖数: 4642
2
leetcode要求每个子树也都是banlanced tree.
A******g
发帖数: 612
3
CLRS也是这么定义的,我觉得careercup150的不对

【在 l*********8 的大作中提到】
: leetcode要求每个子树也都是banlanced tree.
r*********n
发帖数: 4553
4
careercup150上面用leaf node的深度来定义平衡,我觉得这个定义不对。
如果一个树,包括所有子树,只有左child,这棵树的高度是n,显然不是log(n),但是
用careercup150上面的定义,这棵树就是平衡的,因为只有一个leaf node。
O******i
发帖数: 269
5
确实是CC150错了,是个伪定义。
用max depth - min depth <= 1来定义平衡,要求过于严格,实际上是充分而非必要条
件。你例子中那样的树虽然是平衡树但不满足该定义。
这种过于严格的定义必然导致false negative

【在 A******g 的大作中提到】
: 题目:判断一个binary tree 是否平衡,平衡的定义是任意node,左边subtree和右边
: subtree的高度相差不超过1。Careercup150有这道题,用了书上的解法。没有通过全部
: 测试。觉得careercup解法好像不对。
: 比如这个
: {1,2,3,4,5,#,6,7}
: 1
: / \
: 2 3
: /\ \
: 4 5 6

f*******7
发帖数: 943
6
新版的150好像改过来了吧,而且这种歧义面试时需要和面试官确认的
1 (共1页)
进入JobHunting版参与讨论
相关主题
CS 微软 我的求职小结哪些题/算法/结构应该练和多练
有没有准备找Database方向工作的同学careercup150上的题是什么难度?
再问一道老题请问我写的这个判断tree是否balance的code有问题么?
怎样提高解决问题的能力?非CS转码工,准备的好痛苦
如何计算recursion的空间复杂度Google Intern 面试 【请教】
菜鸟问一道java题目,check balanced binary treecareercup150的OOP啥时候出C++ 版啊
问一个leetcode上面binary tree的题目面试题分享及感想
关于phone screeningCC4.1 isBalanced BT 答案的复杂度是不是错的?
相关话题的讨论汇总
话题: depth话题: treenode话题: root话题: careercup话题: null