由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 纽约小公司skype电面一题
相关主题
find the k-th maximum node in a binary search tree 有疑问热腾腾的 LinkedIn 电面题攒RP
BST面试题Twitter电面未通过
谷歌 电面从tree的post order traversal和pre,能否build这个tree?
也被A电了一下这个check whether a binary tree is a BST 问题
电面没做出题。郁闷!!转一些我blog上一些常见的二叉树面试问题和总结
bloomberg onsite题树 inorder下个节点最好办法是啥
在版上看到的G题二叉树如何判断一个节点是不是在另外两个节点的path上。。。。好像是个老题了。。求解?
recovery BST 不考虑相同值的情况么?BFS traverse O(1) space?
相关话题的讨论汇总
话题: none话题: bst话题: count话题: nodes话题: left
进入JobHunting版参与讨论
1 (共1页)
c***C
发帖数: 139
1
Given a binary search tree, find the total number of integers
in between min and max.
30
/
25 40
/
15 28 50
i.e.: count_nodes(..., 20, 50) --> 5
class BST(object):
"""
A Binary search tree.
"""
def __init__(self, value, left, right):
self.value = value
self.left = left
self.right = right
def count_nodes(self, min_, max_):
def count_nodes_(self, count):
if self is not None:
# need to traverse both the left child and the right child
if min_ <= self.value <= max_:
count += 1
count = count_nodes_(self.left, count)
count = count_nodes_(self.right, count)
# only need to traverse the right child
elif self.value < min_:
count = count_nodes_(self.right, count)
# only need to traverse the left child
else:
count = count_nodes_(self.left, count)
return count
return count_nodes_(self, 0)
root = BST(35,
BST(25,
BST(18,
BST(7, None, None),
BST(20, None, None)),
BST(32,
None,
BST(34, None, None))),
BST(43,
BST(40, None, None),
BST(60,
BST(50, None, None),
BST(64, None, None))))
print(root.count_nodes(20, 50))
m******n
发帖数: 187
2
谢谢。

【在 c***C 的大作中提到】
: Given a binary search tree, find the total number of integers
: in between min and max.
: 30
: /
: 25 40
: /
: 15 28 50
: i.e.: count_nodes(..., 20, 50) --> 5
: class BST(object):
: """

D**********d
发帖数: 849
3
Solution: Tree recursion.
// root != NULL.
int GetNodeNumberBetween(node*root,int min, int max){
int num = root->val >= min && root->val <= max;
if(root->left && root->val >= min) num += GetNodeNumberBetween(root-Left,
min, max);
if(root->right && root->val <= max) num += GetNodeNumberBetween(root-Left,
min,
max);
return num;
}
s********u
发帖数: 1109
4
有笔误,第二个if语句后面是root->right 呵呵

Left,

【在 D**********d 的大作中提到】
: Solution: Tree recursion.
: // root != NULL.
: int GetNodeNumberBetween(node*root,int min, int max){
: int num = root->val >= min && root->val <= max;
: if(root->left && root->val >= min) num += GetNodeNumberBetween(root-Left,
: min, max);
: if(root->right && root->val <= max) num += GetNodeNumberBetween(root-Left,
: min,
: max);
: return num;

c********p
发帖数: 1969
5
Mark
s****s
发帖数: 40
6
难道不是 inorder tree transversal?
s*w
发帖数: 729
7
就是每个 node 加个 rank 最简单啊, 不知道你这个题目里面的 bst 是自己设计还
是给定的?

【在 c***C 的大作中提到】
: Given a binary search tree, find the total number of integers
: in between min and max.
: 30
: /
: 25 40
: /
: 15 28 50
: i.e.: count_nodes(..., 20, 50) --> 5
: class BST(object):
: """

s*w
发帖数: 729
8
这个很牛叉

Left,

【在 D**********d 的大作中提到】
: Solution: Tree recursion.
: // root != NULL.
: int GetNodeNumberBetween(node*root,int min, int max){
: int num = root->val >= min && root->val <= max;
: if(root->left && root->val >= min) num += GetNodeNumberBetween(root-Left,
: min, max);
: if(root->right && root->val <= max) num += GetNodeNumberBetween(root-Left,
: min,
: max);
: return num;

s********u
发帖数: 1109
9
是3楼写的那个方法,是preorder。你是不是理解成,min是节点代表的值的最小值?,
我一开始也这么以为,后来一看不对。。min和max是给定的,否则例子不对。

【在 s****s 的大作中提到】
: 难道不是 inorder tree transversal?
1 (共1页)
进入JobHunting版参与讨论
相关主题
BFS traverse O(1) space?电面没做出题。郁闷!!
binary tree, sum of 2 nodes == given numberbloomberg onsite题
F家电面在版上看到的G题
大家看看这是哪道题?recovery BST 不考虑相同值的情况么?
find the k-th maximum node in a binary search tree 有疑问热腾腾的 LinkedIn 电面题攒RP
BST面试题Twitter电面未通过
谷歌 电面从tree的post order traversal和pre,能否build这个tree?
也被A电了一下这个check whether a binary tree is a BST 问题
相关话题的讨论汇总
话题: none话题: bst话题: count话题: nodes话题: left