Algorithm 找到包含所有叶节点的分支是正确的

Algorithm 找到包含所有叶节点的分支是正确的,algorithm,binary-tree,Algorithm,Binary Tree,考虑以下二叉树:(取自) 假设叶节点为真或假,如何找到所有叶节点都为真的分支(或分支) 因此,如果只有8、5、6或7是真的,那么第一个分支将不匹配(需要9才能匹配),但是第二个分支将匹配,因为它的所有叶子都是真的 即使为这种类型的搜索识别这个名称也会有帮助,这样我就可以用谷歌搜索它。你可以使用递归函数,深入到树中,从下到上确定某个分支的所有叶子是否都是真的。然后,这些分支可以存储在一些列表中 下面是一些Python代码。使用树的根节点作为第一个参数,空列表作为第二个参数调用此函数,列表将填充正

考虑以下二叉树:(取自)

假设叶节点为真或假,如何找到所有叶节点都为真的分支(或分支)

因此,如果只有8、5、6或7是真的,那么第一个分支将不匹配(需要9才能匹配),但是第二个分支将匹配,因为它的所有叶子都是真的


即使为这种类型的搜索识别这个名称也会有帮助,这样我就可以用谷歌搜索它。

你可以使用递归函数,深入到树中,从下到上确定某个分支的所有叶子是否都是真的。然后,这些分支可以存储在一些列表中

下面是一些Python代码。使用树的根节点作为第一个参数,空列表作为第二个参数调用此函数,列表将填充正确的分支

def allTrue(节点,trueList=[]):
如果是isLeaf(节点):
return node.value==True
其他:
leftTrue=allTrue(node.left,trueList)
rightTrue=allTrue(node.right,trueList)
bothTrue=leftTrue和rightTrue
如果两者都正确:
trueList.append(节点)
返回双向图

需要注意的一点是:如果
x
已经为false,那么许多编程语言通过不计算
x和y
的第二个参数来尝试变得聪明或懒惰。但是,在这种情况下,如果左分支不全为真,则会导致不访问右分支,从而遗漏一些全为真的分支。因此,递归调用最好转到单独的行。

如果两个子节点的子树的所有叶都为真,则可以进行后序树遍历并将每个非叶节点x标记为真,否则为假(这是子标签的and操作)。通过这种方式,您可以使用所需的属性递归标记整个树。

搜索树是什么意思?谢谢,我不懂Python,但我可以看到那里发生了什么。我要试一试。