我想创建一个以二进制树为参数的递归函数,如果节点下的每个叶子都大于其父节点,则返回True。如果只有一个节点不能满足此条件,则整个函数应返回False。
但是,我正在努力提出一个基本案例,并充分理解如何停止该函数并在即使只有一部分树不满足条件的情况下返回False的情况。任何帮助将不胜感激。
答案 0 :(得分:0)
当遍历树时,基本情况将是叶节点-即没有子节点的节点。对于这样的节点,您将假定它已通过测试(因为否则,您的算法应该已经返回false),因此您将返回true。
对于一般情况,您需要检查节点是否小于其两个子节点,如果不小于,则返回False。否则,为了确保两个孩子都符合该条件,您将返回在左侧and
向下重复的结果:
return check(node.left) and check(node.right)
答案 1 :(得分:0)
使用递归,类似这样的方法应该起作用:
def children_gt_parent(node, parent_val):
if node is None:
return True
if node.value <= parent_val:
return False
return children_gt_parent(node.left, node.value) and children_gt_parent(node.right, node.value)
然后您将其命名为:
tf = children_gt_parent(root, root.value)