我不明白这个递归函数是如何工作的

2024-10-01 00:24:48 发布

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

最近我完成了以下功能,通过“Post Order”方法生成二叉树节点列表:

def getNosPosOrdem(self):
    if self.root is not None:
        nodesList = []
        self.__getNosPosOrdem(nodesList, self.root)
        return nodesList
    else:
        return -1

def __getNosPosOrdem(self, nodesList, node):
    if node.leftNode is not None:
        self.__getNosPosOrdem(nodesList, node.leftNode)
    if node.rightNode is not None:
        self.__getNosPosOrdem(nodesList, node.rightNode)
    nodesList.append(node.value)

这基本上(直到我理解的部分)是从左到右的最后一个元素,我认为在继续代码验证到下一个元素(上面的其他节点,在到达左下角之后)时会有问题,但令我惊讶的是,它是有效的

重点是,我想理解为什么代码仍然在检查其他节点,即使我在添加底部第一个节点时没有递归调用它:

结果是:[2, 6, 9, 17, 12, 5, 27, 40, 45, 36, 20]


Tags: selfnonenode元素returnif节点is