由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 那个kth maximum value in BST 用recursive怎么搞
相关主题
merge two binary search treeamazon 电面
攒人品,amazon一面经历求教:binary search tree中找第i大的数
问个题,bt中找最大的bst请教一个关于sort的问题
请教Palo Alto的住宿问题,同时汇报面试题若干Amazon的拒信,看着真让人生气
攒人品:google电面面经这个rebuild binary tree的问题
题:无限数据流获取第k%的数Amamon onsite 面经
一个GOOG的二叉树面试题rebuild a tree from inorder and level order
请教一个BST找Median的题目重建二叉树 from inorder and level order
相关话题的讨论汇总
话题: ref话题: outnode话题: return话题: kth话题: retnode
进入JobHunting版参与讨论
1 (共1页)
a*******y
发帖数: 1040
1
kth min简单,kth max 要是用inverted inorder的话,要是那个值在left tree里,这
样return回来的不对啊
f*****e
发帖数: 2992
2
kth max = n - kth min?

【在 a*******y 的大作中提到】
: kth min简单,kth max 要是用inverted inorder的话,要是那个值在left tree里,这
: 样return回来的不对啊

d**e
发帖数: 6098
3
还没仔细想,但如果kth min简单的话,那要是那个值在right tree是怎么处理?我觉
得min max应该是差不多解法吧

【在 a*******y 的大作中提到】
: kth min简单,kth max 要是用inverted inorder的话,要是那个值在left tree里,这
: 样return回来的不对啊

a******o
发帖数: 106
4
高手麻烦检查下代码C#
就像BST inorder 遍历一样, private method 传递 ref k 和 输出的node, 每次遍
历一个数 k-1, 如果k==0 输出当前node 就行。
Kth Min 和 Max 原理完全一样, 只不过把Inorder 的顺序变成 右节点先考虑而已

请大侠们批评指正, 谢谢
private static void findKthMinNodeInBST(BinaryTree.Node n, ref int k
, ref BinaryTree.Node outnode)
{
if (n == null) return;
findKthMinNodeInBST(n.Left, ref k, ref outnode);
k--;
if (k < 0) return;
if (k == 0)
{
outnode = n;
return;
}
findKthMinNodeInBST(n.Right, ref k, ref outnode);
}
public static BinaryTree.Node findKthMinNodeInBST(BinaryTree.Node n,
int k)
{
BinaryTree.Node retnode = null;
findKthMinNodeInBST(n, ref k, ref retnode);
return retnode;
}
public static BinaryTree.Node findKthMaxNodeInBST(BinaryTree.Node n,
int k)
{
BinaryTree.Node retnode = null;
findKthMaxNodeInBST(n, ref k, ref retnode);
return retnode;
}
private static void findKthMaxNodeInBST(BinaryTree.Node n, ref int k
, ref BinaryTree.Node outnode)
{
if (n == null) return;
findKthMaxNodeInBST(n.Right, ref k, ref outnode);
k--;
if (k < 0) return;
if (k == 0)
{
outnode = n;
return;
}
findKthMaxNodeInBST(n.Left, ref k, ref outnode);
}
d****o
发帖数: 1055
5
就像找linked list 离尾第k个串一样。设置2个int a b,当a走到第kth min value,然
后a,b同时走。

【在 a*******y 的大作中提到】
: kth min简单,kth max 要是用inverted inorder的话,要是那个值在left tree里,这
: 样return回来的不对啊

s***y
发帖数: 3042
6
为啥不同啊?我是新手,随便写个。
int printKth(Node *root, int *k) {
if( !root )
return 0;
int ret;
ret = printKth(root->right, k);
if(ret == -1)
return -1;
(*k)--;
if((*k)==0) {
cout << "the kth is " << root->data << endl;
return -1;
}
return printKth(root->left, k);
}

【在 a*******y 的大作中提到】
: kth min简单,kth max 要是用inverted inorder的话,要是那个值在left tree里,这
: 样return回来的不对啊

a*******y
发帖数: 1040
7
弄错了
这个应该可以
void findK(Node* p, int& k, int& value) {
if(!p || k < 0) return;
findK(p->right, k, value);
--k;
if(k == 0) {
value = p->value;
cout << p->value;
return;
}
findK(p->left, k, value);
}
1 (共1页)
进入JobHunting版参与讨论
相关主题
重建二叉树 from inorder and level order攒人品:google电面面经
大概说一下昨天的Google Phone Interview题:无限数据流获取第k%的数
树 inorder下个节点最好办法是啥一个GOOG的二叉树面试题
inorder traversal and BST请教一个BST找Median的题目
merge two binary search treeamazon 电面
攒人品,amazon一面经历求教:binary search tree中找第i大的数
问个题,bt中找最大的bst请教一个关于sort的问题
请教Palo Alto的住宿问题,同时汇报面试题若干Amazon的拒信,看着真让人生气
相关话题的讨论汇总
话题: ref话题: outnode话题: return话题: kth话题: retnode