由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - Cracking上一道题求教
相关主题
Career cup 4.9 path sum的答案肯定错了min depth binary tree用recursive解法一般能过关麽?
请教一个cracking coding interview书上的问题largest bst 解法不理解的地方
Lowest Common AncestorInterview question::
回馈本版,新鲜店面,新题新气象请问二叉搜索树如何找到两个点的最近祖先?
热腾腾的 LinkedIn 电面题攒RP大虾帮忙看看代码,为什么 res参数传入不了,返回总是null
一道google面试题如何求一个complete binary tree的nodes个数?
Amazon 打印给定node距离最近的K个nodes问题在哪儿啊 kth Node of BST,大家帮忙
Flatten Binary Tree to Linked List的recursive解法发现一个很恶心的基础问题
相关话题的讨论汇总
话题: path话题: sum话题: int话题: level
进入JobHunting版参与讨论
1 (共1页)
e******i
发帖数: 106
1
是树那章的。
You are given a binary tree in which each node contains a value. Design an
algorithm to print all paths which sum to a given value. Note that a path
can start or end anywhere in the tree.
书上的解法如下:
public void findSumPath(TreeNode root, int sum){
int depth = getDepth(root);
int[] path = new int[depth];
findSumPath(root, path, sum, 0);
}
public void findSumPath(TreeNode root, int[] path, int sum, int level){
if(root == null){
return null;
}
path[level] = root.val;
int temp = 0;
for(int i = level; i >=0; i--){
temp+=path[i];
if(temp==sum){
print(path, i ,level);
}
}
findSumPath(root.left, path, sum, level+1);
findSumPath(root.right, path, sum, level+1);
path[level] = Integer.MIN_VALUE;
}
我不明白的是,题目要求在一个树里找任意的path,为什么解法给人的感觉像是从root
到每一个节点的path呢?
A******g
发帖数: 612
2
每一次call到findSumPath函数的时候path里就有一条从root到现在这个node的路径
比如 node 0 -> node 5 -> node 8 -> node 9(现在的节点)
value: (10) (-5) (5) 7
比如目标sum是7
看那个for loop是从后往前加
node 9 (7) sum = 7, 符合,打印结果
node 8 -> node 9 sum =12
node 5 -> node 8 -> node9 sum = 7 符合,打印结果
...
如此类推
c********t
发帖数: 5706
3
嗯,其实题目应该是 a path can start from any ancestor node to its any
successor node.

【在 e******i 的大作中提到】
: 是树那章的。
: You are given a binary tree in which each node contains a value. Design an
: algorithm to print all paths which sum to a given value. Note that a path
: can start or end anywhere in the tree.
: 书上的解法如下:
: public void findSumPath(TreeNode root, int sum){
: int depth = getDepth(root);
: int[] path = new int[depth];
: findSumPath(root, path, sum, 0);
: }

e******i
发帖数: 106
4

对,我也是这么想的,不是任意节点间的

【在 c********t 的大作中提到】
: 嗯,其实题目应该是 a path can start from any ancestor node to its any
: successor node.

e******i
发帖数: 106
5

你说的我懂,我觉得给出的解法无法找出终点和起点在同一个level上的path

【在 A******g 的大作中提到】
: 每一次call到findSumPath函数的时候path里就有一条从root到现在这个node的路径
: 比如 node 0 -> node 5 -> node 8 -> node 9(现在的节点)
: value: (10) (-5) (5) 7
: 比如目标sum是7
: 看那个for loop是从后往前加
: node 9 (7) sum = 7, 符合,打印结果
: node 8 -> node 9 sum =12
: node 5 -> node 8 -> node9 sum = 7 符合,打印结果
: ...
: 如此类推

d*****n
发帖数: 23
6
我开始也有这个疑惑,但后来发现tree的题应该是默认不提供parent的访问的,只能从
parent访问child
e******i
发帖数: 106
7

你说的对,所以是她题目说的不清楚。我觉得解法是backtrack

【在 d*****n 的大作中提到】
: 我开始也有这个疑惑,但后来发现tree的题应该是默认不提供parent的访问的,只能从
: parent访问child

A******g
发帖数: 612
8
对,career这题是这能从parent到child的path
leetcode上有一题是这个的升级版,从任意node开始,然后任何一步可以向上到parent
,也可以向下到child的

【在 e******i 的大作中提到】
:
: 你说的对,所以是她题目说的不清楚。我觉得解法是backtrack

1 (共1页)
进入JobHunting版参与讨论
相关主题
发现一个很恶心的基础问题热腾腾的 LinkedIn 电面题攒RP
Find the node with given value in binary tree in in-order一道google面试题
问tree的iterative traversalAmazon 打印给定node距离最近的K个nodes
电面没做出题。郁闷!!Flatten Binary Tree to Linked List的recursive解法
Career cup 4.9 path sum的答案肯定错了min depth binary tree用recursive解法一般能过关麽?
请教一个cracking coding interview书上的问题largest bst 解法不理解的地方
Lowest Common AncestorInterview question::
回馈本版,新鲜店面,新题新气象请问二叉搜索树如何找到两个点的最近祖先?
相关话题的讨论汇总
话题: path话题: sum话题: int话题: level