Я пытаюсь определить 3 функции, которые войдут в одну функцию, а затем вернут True или False, в зависимости от того, находится ли конкретный номер (ключ) в данном списке (дереве).Вот код, который у меня есть:
def is_empty_tree(tree):
return isinstance(tree, list) and not tree
def is_leaf(tree):
return isinstance(tree, int)
def left_subtree(tree):
return tree[0]
def right_subtree(tree):
return tree[2]
def get_key(tree):
return tree[1]
def is_innernode(tree):
return isinstance(tree,list)
def func_traverse(binary_tree, func1, func2, func3):
if is_empty_tree(binary_tree):
return func3()
if is_leaf(binary_tree):
return func2(binary_tree)
if is_innernode(binary_tree):
return func3(get_key(binary_tree), \
traverse(left_subtree(binary_tree), inner_node_fn, leaf_fn, \
empty_tree_fn), traverse(right_subtree(binary_tree), \
inner_node_fn, leaf_fn, empty_tree_fn))
def func3():
return False
def func2(num):
return num
def func3(binary_tree, left, right):
if isinstance(binary_tree, int):
return exists(binary_tree)
else:
????
def contain__the_key(key, binary_tree):
return key == func_traverse(binary_tree, search, exists, not_in_tree)
#Test example
contain_the_key(4, [6, 2, [[4, 3, 9], 0, []]])
>>> True
conatin_the_key(6, [[], 1, 5])
>>> False
В чем проблема, у меня нет хороших идей о том, как написать func1, func2, func3, поэтому он вернет true, если он находится в спискеи ложь в противном случае.Любые идеи будут оценены!