我理解如果你的方法参数是根节点,如何计算二进制搜索树中的节点,我只是想知道如果方法调用参数是其他节点,是否有计算它们的方法比根?
我最初有:
public int size(BSTNode cur)
{
if (cur == null)
return 0;
return 1 + size(cur.getLeft()) + size(cur.getRight());
}
这仅在我在方法调用中使用的节点是root用户时才有效,否则它只返回子树中的节点数,而不是整个树。
答案 0 :(得分:3)
如果你的树节点有一个父节点的链接,你可以一直上升到根节点(即没有父节点的节点):
TreeNode node = ...
while (node.parent != null) {
node = node.parent; // Go up the tree
}
// Now you are at the root, so you can count all nodes
否则,该任务是不可能的,因为无法到达树中较高的其他节点。