如果我有一个二叉搜索树,就像图中的那样,遍历方法会是什么样的,它可以递归地找到权重最大的路径?
我试着做了一个inOrder遍历,但是我认为我写的不正确。所以一个可以做这个的例子会很感激。
编辑:
private static void inOrder(BinaryNode tree) {
if(tree == null) return;
if (tree is an end node) {
update the end node array
}
if(tree.rightchild != null) {
parent[rightChild.getLabel()] = tree;
}
if(tree.leftChild != null) {
parent[leftChild.getLabel()] = tree;
}
inOrder(tree.leftChild);
inOrder(tree.rightChild);
}
类,该类支持我正在尝试编写的类
第一次
sample input:示例输出:output for the tree image shown
1条答案
按热度按时间h79rfbju1#
您可以创建一个递归函数,比如 inorder 函数,但是您提供的
inorder
代码在很多方面都是错误的,因为它甚至没有使用BinaryNode
类的现有属性。这个递归函数应该返回最大权值 * 和对应的路径 *,它在以给定节点为根的树中找到。基本情况发生在给定节点为空时。在这种情况下,最大权值为0,路径为空。
有几种组织返回值的方法。我选择了
ArrayList<Integer>
,它的第一个条目是最大权重,所有其他条目都是0或1,表示向左或向右行走。下面是该函数:
下面是在引用
root
节点时调用它的方法: