我必须找到从根节点到叶节点的最大和。我提出了以下节点,但它没有给出正确的输出。树可以有2个子节点以上(它不是二叉树)。
public static long findBestPath(Path path) {
long max = 0, sum = 0;
if (path.getChildren().size() == 0)
return path.getValue();
else if (path.getChildren().size() == 1)
return path.getValue() + findBestPath(path.getChildren().get(0));
else {
for (int i = 0; i < path.getChildren().size(); i++) {
sum = path.getChildren().get(i).getValue() + findBestPath(path.getChildren().get(i));
if (sum > max)
max = sum;
}
return max;
}
}
我用了另一种方法来解决我的问题。尽管知道正确的解决方案可以很好地找到非二叉树的最大和路径。
有关良好的解释,您可以从此处参考
你的错误应该是这样的:
sum = path.getChildren().get(i).getValue() findBestPath(path.getChildren().get(i));
你必须写:
sum = path.getValue() findBestPath(path.getChildren().get(i));
你也不需要中间的“其他如果”,这是对于路径只有一个孩子的情况,“其他”在只有一个孩子的情况下也可以正常工作。
所以你的代码应该是这样的:
public static long findBestPath(Path path) {
long max = 0, sum = 0;
if (path.getChildren().size() == 0)
return path.getValue();
else {
for (int i = 0; i < path.getChildren().size(); i++) {
sum = path.getValue() + findBestPath(path.getChildren().get(i));
if (sum > max)
max = sum;
}
return max;
}
}
我希望它能奏效。
另一个解决方案,返回child(i)的总和child(i)的最大子项总和(如果我理解正确),将是:
public static long findBestPath(Path path) {
long max = 0, sum = 0;
if (path.getChildren().size() == 0)
return 0;
else {
for (int i = 0; i < path.getChildren().size(); i++) {
sum = path.getChildren().get(i).getValue() + findBestPath(path.getChildren().get(i));
if (sum > max)
max = sum;
}
return max;
}
}
只有当所有值都是正数时,两者才有效。
如何在二叉树中找到最小路径和,并打印路径?路径可以从ROOT节点到任何LEAF节点。我已经编写了C代码来查找最小和,但是在打印路径时遇到了问题。 参数列表中的未使用,有人能帮我打印路径和最小的路径吗?
给了我一个问题,上面写着: 给定一个具有整数权值(正负两种)的连通有向图,发展一种求两顶点之间最短路径的算法。 我想我可以使用最小生成树算法,比如Kruskal的算法,然后用Dijkstra的算法来证明,因为在MST中,每个顶点只有一条内边,Dijkstra的算法即使在负权值下也能工作。 这听起来像是共食吗? 附注。我很难证明MST包含有向图的每个顶点的最短路径。
这道题是 LeetCode 124 题。 给定一个非空二叉树,返回其最大路径和。注意,这里的“路径”并非自顶向下的单向路径,而是二叉树中任意连通的路径,可以在任一节点开始和结束。比如对于下图的二叉树,10->12->9 是一个最大路径: -9 / \ 1 12 / \ 10 9 分析 首先定义“端点”的概念。一条路径有两个端点:起点和终点。比如上述示例中,
在一个具有不同正边的无向图中,是否可能有一个MST与最短路径树没有公共边? 我一直试图引出不同的例子,但似乎这是不可能的。最短路径树中的最短路径边似乎也应该包括在MST中。
(b)假设图的最小生成树是唯一的。无向图的最小生成树中一对顶点之间的路径一定是最短(最小权)路径吗? 我的回答是 (a)
问题- 我的解决方案- 输出- 输入:[1,-2,-3,1,3,-2,null,-1]3输出:应为真:假 我真的不知道我在这方面出了什么问题。我尝试玩int和整数类型选项的结果,但它不工作。请帮忙。