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