Redian新闻
>
binary tree, sum of 2 nodes == given number
avatar
binary tree, sum of 2 nodes == given number# JobHunting - 待字闺中
r*e
1
Given a binary tree, find a pair of nodes whose sum is the given target
value. Find all solutions.
Any idea to use as space as possible? thanks! :)
avatar
C*U
2
Do you have parent pointer?
predecessor and succesor?

【在 r*****e 的大作中提到】
: Given a binary tree, find a pair of nodes whose sum is the given target
: value. Find all solutions.
: Any idea to use as space as possible? thanks! :)

avatar
e*e
3
Binary tree 是暴力解法了吧.
Binary search tree is O(log(n)).
avatar
c*t
4
hashmap + traversal ?
time O(n)
space O(n)
看看有没有高人更优化。

【在 r*****e 的大作中提到】
: Given a binary tree, find a pair of nodes whose sum is the given target
: value. Find all solutions.
: Any idea to use as space as possible? thanks! :)

avatar
r*e
5
no parent pointer. the structure is defined below.
struct BTNode{
BTNode* right;
BTNode* left;
int val;
}

【在 C***U 的大作中提到】
: Do you have parent pointer?
: predecessor and succesor?

avatar
r*e
6
恩, 我也只能想到这个了,所以发帖请教高人啊。。

【在 c********t 的大作中提到】
: hashmap + traversal ?
: time O(n)
: space O(n)
: 看看有没有高人更优化。

avatar
f*3
7
sorry,即便hashmap 和 traversal 也想不明白,是类似inorder traversal然后把每
个点的值hash到一个array里,再找么?

【在 r*****e 的大作中提到】
: 恩, 我也只能想到这个了,所以发帖请教高人啊。。
avatar
p*2
8
two sum.
两个指针一个从前往后,一个从后往前。
实现两个函数,getnext和getprev
avatar
c*t
9
要排序?那就是O(nlogn)了?而且还需要存到array里,至少O(n) space?

【在 p*****2 的大作中提到】
: two sum.
: 两个指针一个从前往后,一个从后往前。
: 实现两个函数,getnext和getprev

avatar
p*2
10
不是bst呀 这题bst才有意思吧

【在 c********t 的大作中提到】
: 要排序?那就是O(nlogn)了?而且还需要存到array里,至少O(n) space?
avatar
h*n
11
traverse之后不就变成2 sum problem了么
呵呵
如果是BST连sort这一步都不用了
题目有什么要求吗?空间时间方面?

【在 r*****e 的大作中提到】
: Given a binary tree, find a pair of nodes whose sum is the given target
: value. Find all solutions.
: Any idea to use as space as possible? thanks! :)

avatar
r*e
12
确实是变成了2sum.
没有什么空间时间要求,就是想跟大家讨论讨论是否还有什么好方法。

【在 h****n 的大作中提到】
: traverse之后不就变成2 sum problem了么
: 呵呵
: 如果是BST连sort这一步都不用了
: 题目有什么要求吗?空间时间方面?

avatar
p*2
13

你确认这题是BT不是BST?

【在 r*****e 的大作中提到】
: 确实是变成了2sum.
: 没有什么空间时间要求,就是想跟大家讨论讨论是否还有什么好方法。

avatar
K*n
14
re
换了tree的马甲,还是two sum

【在 p*****2 的大作中提到】
: two sum.
: 两个指针一个从前往后,一个从后往前。
: 实现两个函数,getnext和getprev

avatar
r*e
15
先是分析BST的case, 然后说,如果BT如何做。。。
很遗憾,没有符合二爷的口味

【在 p*****2 的大作中提到】
:
: 你确认这题是BT不是BST?

avatar
p*2
16

BST你是怎么做的?

【在 r*****e 的大作中提到】
: 先是分析BST的case, 然后说,如果BT如何做。。。
: 很遗憾,没有符合二爷的口味

avatar
r*e
17
For BST case, time: O(N), space: O(N)
1) in-order scan the tree into an array,
2) 2sum scan the array
弱问一下,若是用get_next(), get_pre()从两边往中间扫。
具体的get_next()和get_pre()的实现是什么?
(1) 存个临时变量,以及相应的栈? 若是如此,每次get_next()的时间是O(1),stack
takes O(N) space.
(2) 不存临时变量,每次binary search the next closest value? time is O(logN),
space is O(1)
If we adopt option (1),for bst case, time is O(N), space is O(N)
If we adopt option (2),for bst case, time is O(NlogN), space is O(1)
不知理解是否正确,请指教

【在 p*****2 的大作中提到】
:
: BST你是怎么做的?

avatar
p*2
18
space 我感觉是logn呀

stack
),

【在 r*****e 的大作中提到】
: For BST case, time: O(N), space: O(N)
: 1) in-order scan the tree into an array,
: 2) 2sum scan the array
: 弱问一下,若是用get_next(), get_pre()从两边往中间扫。
: 具体的get_next()和get_pre()的实现是什么?
: (1) 存个临时变量,以及相应的栈? 若是如此,每次get_next()的时间是O(1),stack
: takes O(N) space.
: (2) 不存临时变量,每次binary search the next closest value? time is O(logN),
: space is O(1)
: If we adopt option (1),for bst case, time is O(N), space is O(N)

avatar
c*t
19
hashmap key=node.val, value=count 边进hashmap,边找
比如 target是5,读到3,找2,如果没有则put<3,1>, 如果hashmap里有<2,1>,找到匹
配,则 (2,3)放入解,map里设<2,0>防止重复用。

【在 f*******3 的大作中提到】
: sorry,即便hashmap 和 traversal 也想不明白,是类似inorder traversal然后把每
: 个点的值hash到一个array里,再找么?

avatar
c*t
20
2爷给zkss bst的解法吧

【在 p*****2 的大作中提到】
: space 我感觉是logn呀
:
: stack
: ),

avatar
r*e
21
对。糊涂了

【在 p*****2 的大作中提到】
: space 我感觉是logn呀
:
: stack
: ),

avatar
p*2
22

LZ已经解释过了。O(n)时间,Logn空间

【在 c********t 的大作中提到】
: 2爷给zkss bst的解法吧
avatar
c*t
23
没懂
1) in-order scan the tree into an array,
这第一步,不就是O(n)空间了吗?

【在 r*****e 的大作中提到】
: 对。糊涂了
avatar
r*e
24
那个space O(logN) 的解法是基于二爷的思路,调用get_next(), get_pre()从两头走
向中间。此时,get_next(), get_pre()的实现是基于stack的in-order遍历。
若是一般的in-order,就需要O(N)space.

【在 c********t 的大作中提到】
: 没懂
: 1) in-order scan the tree into an array,
: 这第一步,不就是O(n)空间了吗?

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。