java - 计算树中的左子节点

标签 java data-structures tree nodes

我应该实现一个递归方法来计算左子树节点的数量。到目前为止我的代码是:

private int countLeftNodes(IntTreeNode node){
    int c = 0;
    if (node != null){
        c = 1 + countLeftNodes(node.left);
        countLeftNodes(node.right);
    }

    return c;
}

它返回的数字远小于应有的数字。我有一种感觉,我的遍历是关闭的,因为它似乎只计算最左边的子节点,然后终止。当我在大小为 16 的 IntTree 上调用此方法时,我应该得到 8 个左子节点、7 个右子节点和一个根节点,但我得到的是 4 个左子节点。

最佳答案

您永远不会计算右树中的左节点。

private int countLeftNodes(IntTreeNode node)
{
    int c = 0;
    if (node.left != null)
    {
        c += 1 + countLeftNodes(node.left);
    }
    if(node.right != null)
    {
        c += countLeftNodes(node.right);
    }

    return c;
}

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

相关文章:

c++ - 如何使用 std::map 或 set 管理目录路径?

java - Winrun4j:超过最大类路径大小

Java 反射库 - 使用没有包信息的 Class.forName()

java - BufferedinputStream 默认缓冲区大小

algorithm - 基数树数据结构插入字符串

c++ - 让老鼠走出迷宫

c++ - STL 结构 : "insert if not present" operation?

algorithm - 我试图在时间 O(1) 的二叉搜索树中找到一个键的后继

c++ - BST 递归查找高度

java - 继承 :hidden variable of superclass in subclass