我有一个定义二叉树的Java类。 现在,我必须添加一个方法( ratio() ),该方法返回对该节点(或多个节点中的一个,如果有多个)的引用U,以使根子树中的节点数之比U(因此包括节点本身)和子树的高度被最大化。 为此,我必须将总数加1,否则该比率的叶子将是1/0 =无限。

我以为我会定义一个公共方法,该方法检查此树是否为空,然后返回异常,否则它将调用私有方法,该方法在根的两个子树上进行所有工作。

但是私有方法(如果此过程正确)不知道如何编写。 我还可以定义一个类来帮助我完成此任务,但是如何呢?

public class BinaryTree {

    protected class Node {
        protected Integer element;
        protected Node left;
        protected Node right;

        Node(int element) {
            this.element = element;
            left = right = null;
        }

        Node(int element, Node left, Node right) {
            this.element = element;
            this.left = left;
            this.right = right;
        }

    } //end Node class

    public class NodeReference {
        private Node node;

        private NodeReference(Node node) {
            this.node = node;
        }

        public int getElement() {
            return node.element;
        }

        public void setElement(int e) {
            node.element = e;
        }
    }

    protected Node root;

    public BinaryTree() {
        root = null;
    }

    private class BoolNode {

        boolean found; 
        Node node;

        BoolNode(boolean found, Node node) {
            this.found = found;
            this.node = node;
        }
    }

    public NodeReference ratio() {
    if(isEmpty()) //equals to if(root == null)
            throw new IllegalStateException("Empty tree."); 
        else 
            ratio(root);
} 

    private NodeReference ratio(Node node) {
        //...
    }
}

谁能帮我? 谢谢

===============>>#1 票数:0

让我们阅读要求

子树中的节点数

您需要一个方法public int numberOfNodesInSubtree()

...以及子树的高度...

您需要一个方法public int heightOfSubtree()

...之间的比例

您需要一个方法double ratioScore() ,(在这里您可以实现“为此,我必须加1,否则该比率的叶子将是1/0 = infinity。”)

如果实现了这三种方法,则ratio应该很容易。

...返回对节点(或节点之一,...)U的引用,以使比率... 最大化

获取包含所有节点的列表,集合,迭代器等。 循环遍历所有节点,计算比率得分,并保持得分最高。 返回分数最高的节点。

  ask by Katherine Maurus translate from so

未解决问题?本站智能推荐:

2回复

在二叉树中找到最大值并返回该节点

如标题所示,我需要帮助在二叉树中查找max。 我试图用递归做到这一点。 节点具有一个频率实例变量,如果节点中的元素在树中是重复的,则该变量会更新,并且它是试图达到的最大值,但我只是得到了nullpointerexception。 这是我的代码: 请帮我!!!
1回复

查找二叉树中节点数之间的最大比率

我编写了一个类,该类定义了对二叉树的一些操作。 现在,我必须添加一种方法,该方法返回对该节点(或多个节点中的一个,如果有多个)的引用,以使根U的子树中的节点数之间的比率(因此包括节点本身)和高度(+1)最大化。 所以我必须将叶子的值1加到总和上,否则比率将是1/0 =无穷大:也就是说,结
4回复

如何在二叉树中查找最大值

我必须以这样的方式完成方法maxElem(节点节点) ,方法maxElem()返回二叉树中包含的最大值。 我怎样才能做到这一点? 我不知道该怎么做.. 非常感谢!
2回复

二叉树的最大高度

嗨,我遇到了一个代码,以找到二叉树的最大高度。 在这段代码中,为什么return语句中有+1 ?
3回复

计算Java中二叉树中的节点数

我们只需要完成函数“ size”,该函数将统计二叉树中的节点数。 我已经写了上面的代码。 对于某些测试用例,它给出了错误的答案。 请解释上面代码中的错误。
3回复

二叉树的唯一节点数

生成二叉树后,如何为每个节点设置索引? 因此,我可以在特定节点上使用诸如getIndex()类的调用来返回其索引。 我的树类:
8回复

递归查找二叉树中节点的高度之和

如何在二叉树中递归地找到节点的高度之和? 例: 我已经尝试过了,但是它只能得到树的高度,而不是所有节点高度的总和。 我感到很难跟踪递归计数器,似乎每个递归调用的totalHeight设置为0。 不是很好。
1回复

Java - 沿二叉树评估节点值

我是Tree结构的新手。 我正在尝试设计一种算法,该算法将预定的树作为输入。 然后它应该用我自己设计的对象播种树的根(我不认为它与算法的设计有关,但对象是一个ArrayList),并使用“更改运算符”来修改对象沿着树的每个分支。 更改运算符的通过次数取决于分支长度。 必须在树的每个节点处
2回复

如何在二叉树中打印节点数最多的关卡?

我正在尝试使用教授提供的.class文件来运行BT,但我无法真正打印出BT中节点数最多的级别。 我将运行文件时得到的输出放入。 产量 我的树的高度是7,但是值都错了。 请帮助。 谢谢。
1回复

在二叉树中为节点输入值

尽管对于其他人来说,这个问题似乎根本不是问题,但我坚持不懈,无法解决。 互联网上似乎没有相似之处。 我需要将值添加到常规二叉树中的节点。 我输入树中的节点数,然后输入根的序数(零)和根中的值,最后输入节点的序数(子级),即子级的值,信息是左孩子还是右孩子,以及父母的序号。 最后,将打印二