java - 计算二叉树中的节点数

标签 java count binary-tree nodes

我在计算二叉树中的节点时遇到问题。这是一个真正简单的树,如下图所示。

                                (5)
                       (3)-------^-------(7)
                  (2)---^---(6)           ^-------(9)
                       (5)---^---(8)

我添加了 8 个节点,因此应该有 8 个。但是,当我运行代码时,它计数为 7 个节点。我认为它只是计算所有左节点和右节点,而不计算根,但我将节点数设置为 1 以在计算左节点和右节点之前计算根。请参阅下面的代码

private int getNumNodes(Node<E> root){
        numNodes = 1; // starts by counting the root

        // counts the left nodes
        if(root.left != null){
            numNodes += getNumNodes(root.getLeft());
        }

        // counts the right nodes
        if(root.right != null){
            numNodes += getNumNodes(root.getRight());
        }               
    return numNodes;
}

public int getNumNodes(){
    return root == null ? 0 : getNumNodes(root);
}

一定是在某个地方缺少计数,但我不确定它发生在哪里。你们能帮我一下吗?谢谢。

最佳答案

我认为问题在于 numNodes 是一个类成员,而它应该是该方法的局部变量。

关于java - 计算二叉树中的节点数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15422988/

相关文章:

java - 这个算法在 Java 中执行有什么问题?

algorithm - 删除所有不在任何路径上且 sum>= k 的节点

java - 尝试在对话框中使 ImageView 全尺寸不起作用

java - 为什么java ThreadPoolExecutor在发生RuntimeException时杀死线程?

java - 搜索和计算文本文件 Java 中的特定单词

IF 语句中的 SQL SELECT 语句

c - 为什么下面的代码显示错误?

java - Spring bean 的多个实例

java - 运行 "sudo R CMD javareconf"得到 "Cannot find any Java interpreter"

当使用 COUNT 与 LEFT OUTER JOIN 和 GROUP BY 时,MySQL 包含零行