- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在努力寻找解决以下问题的算法:
Given a binary tree of integers, the cost of a branch (a.k.a. a branch that starts from the root and reaches the leaf node) is given by the sum of his values. Write a function that returns a list of the cheapest branch.
谁能推荐我完成这个练习的最简单方法?
最佳答案
可以很容易地递归完成。该函数打印所有根到叶的路径以及最便宜的分支。我使用 Arraylist 将所有节点从根节点添加到叶节点。每当到达叶节点时,我只检查到目前为止的 maxSum 是否小于当前根到叶的路径并更新它。
class Node {
public int info;
public Node left;
public Node right;
public Node(int info) {
this(info, null, null);
}
public Node(int info, Node left, Node right) {
this.info = info;
this.left = left;
this.right = right;
}
}
public class RootToLeaf {
private static int maxSum = Integer.MAX_VALUE;
private static ArrayList<Integer> finalList = new ArrayList<>();
public static void main(String[] args) {
Node root = new Node(8);
root.left = new Node(4);
root.left.left = new Node(3);
root.left.right = new Node(1);
root.right = new Node(5);
root.right.right = new Node(11);
ArrayList<Integer> list = new ArrayList<Integer>();
path(root, list,0);
System.out.println("Cheapest list is - " + finalList.toString() + " and minimum sum is " + maxSum);
}
private static void path(Node root, ArrayList<Integer> list,int s) {
if(root==null) {
return;
} else {
list.add(root.info);
s = s+root.info;
}
if ((root.left == null && root.right == null)) {
System.out.println(list);
if(maxSum>s) {
maxSum = s;
finalList = new ArrayList<>(list);
}
return;
}
path(root.left, new ArrayList<Integer>(list),s);
path(root.right, new ArrayList<Integer>(list),s);
}
}
输出结果如下:
[8, 4, 3]
[8, 4, 1]
[8, 5, 11]
Cheapest list is - [8, 4, 1] and minimum sum is 13
关于algorithm - 在二叉树中找到最便宜的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31035703/
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
很难说出这里问的是什么。这个问题是模棱两可的、含糊的、不完整的、过于宽泛或修辞的,不能以其目前的形式得到合理的回答。如需帮助澄清此问题以便可以重新打开,visit the help center .
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 6年前关闭。 Improve thi
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
我是一名优秀的程序员,十分优秀!