Python: 计算多个子节点树的最大高度

2024-07-05 14:31:28 发布

您现在位置:Python中文网/ 问答频道 /正文

def __init__(self,label=None):
    self.label = label
    self.leftMostChild = None
    self.RightSibling = None


def height(self):
    if self.leftMostChild == None and self.RightSibling == None:
        return 0
    else:
        if self.leftMostChild:
            return self.leftMostChild.height() + 1

        if self.RightSibling:
            return self.RightSibling.height()

显然,高度降低了1。当生成高度为3的树时,2在调用函数height后得到返回。我不确定我在哪里做的不对。在

任何帮助都将不胜感激。在


Tags: andselfnonereturnif高度initdef
1条回答
网友
1楼 · 发布于 2024-07-05 14:31:28

Return导致函数立即结束。这意味着,如果一个节点同时具有最左边的子节点和最右的同级节点,则永远不会计算右同级节点。这里是一个函数,每个if/else分支只有一个返回。在

def height(self):
    if self.leftMostChild == None and self.RightSibling == None:
        return 0
    else:
        leftHeight = rightHeight = 0
        if self.leftMostChild:
            leftHeight =  self.leftMostChild.height() + 1

        if self.RightSibling:
            rightHeight = self.RightSibling.height()
        return max(leftHeight, rightHeight)

这可以进一步简化为:

^{pr2}$

相关问题 更多 >