Проверьте, существует ли ключ в дереве с вложенными списками - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь определить 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, если он находится в спискеи ложь в противном случае.Любые идеи будут оценены!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...