如何查找具有最大子项数的节点并返回该数字?

时间:2014-02-13 20:42:32

标签: pointers tree nodes children treenode

我需要编写一个函数来查找具有最多子节点的节点并返回子节点数。该函数应该有一个指向树根的指针作为输入。有人可以为此功能提供可能的伪代码吗?我对第一个孩子和兄弟指针的概念感到困惑。

谢谢!

2 个答案:

答案 0 :(得分:1)

递归。

int maxChildren = findMaxChildren(root, 0);

int findMaxChildren(TreeNode root, int max) {
    if (root.getChildren().length > max) max = root.getChildren().length;
    for (TreeNode e : root.getChildren()) {
        int tmp = findMaxChildren(e, max);
        if (tmp > max) max = tmp;
    }
    return max;
}

答案 1 :(得分:1)

使用firstChild和nextSibling的递归伪代码:

int maxChildren = findMaxChildren(root, 0);

int findMaxChildren(TreeNode root, int max) {
    if (root.getChildren().length > max) max = root.getChildren().length;
    TreeNode e = root.firstChild();
    while (e != null) {
        int tmp = findMaxChildren(e, max);
        if (tmp > max) max = tmp;
        e = e.nextSibling();        
    }
    return max;
}