如何搜索每个节点可能有两个以上子节点的树的叶子?

时间:2015-03-28 23:41:31

标签: algorithm

我正在尝试在树数据结构的叶子中搜索目标值。 我的功能如下:

def searchLeaves(self, target): #DFS
        if len(self.children == 0): #is a leaf
            if self.data == target:
                return True
            else:
                return False
        else: 
            for x in self.children:
                return x.searchLeaves(target)

但是,我的问题出在else语句中。如果它是二叉树,我可以做

else:
    return x.leftchild.searchLeaves(target) or x.rightchild.searchleaves(target)

为了巩固基础案例将产生的愚蠢和真实的组合。我怎么能将这个“或”逻辑运算符应用于未确定数量的孩子?

1 个答案:

答案 0 :(得分:5)

使用any

else:
    return any(x.searchLeaves(target) for x in self.children)

这相当于:

else:
    for x in self.children:
        if x.searchLeaves(target):
             return True
    return False