Python, проверяя, дают ли переменной разные значения подряд? - PullRequest
1 голос
/ 04 мая 2020

Мне нужна помощь в подготовке небольшого условия if в python.

У меня есть этот код: (пример basi c geeks для гиков бинарного дерева)

class Node:
def __init__(self,key):
    self.left = None
    self.right = None
    self.val = key


root = Node(9)

root.left = Node(7)
root.left.left = Node(2)
root.left.left = Node(3)

root.left.right = Node(5)

root.right = Node(8)
root.right.left = Node(7)
root.right.left.right = Node(5)

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

    root.left.left = Node(2)
    root.left.left = Node(3)
    return False

Короче:

root = Node(9)
root.left = Node(7)
root.left.left = Node(2)
root.left.left = Node(3)
root.left.right = Node(5)
root.right = Node(8)
root.right.left = Node(7)
root.right.left.right = Node(5)
---FALSE---

check_tree(root) = False

###########################################
root2 = Node(9)
root2.left = Node(7)
root2.left.left = Node(2)
root2.left.right = Node(5)
root2.right = Node(8)
root2.right.left = Node(7)
root2.right.left.right = Node(5)
---TRUE---

check_tree(root2) = True

Спасибо всем заранее кто поможет мне с этим:)

1 Ответ

1 голос
/ 04 мая 2020

Это должно работать, если вы знаете, куда хотите вставить узел. Возвращает значение узла в этом месте и является ли это вставкой нового узла или нет.

#Where traversalOrder is your place of insertion (ex. root.right.left)
#and nodeVal is the value you wish to insert into the tree
def traverse(traversalOrder, nodeVal):
    #If there is a value at the given location within the tree,
    #Return false and node val currently there
    if traversalOrder != None:
        return False, traversalOrder.val
    #insert the value otherwise
    traversalOrder = Node(nodeVal)
    #Else, return true and the new inserted val
    return True, nodeVal

Этот метод можно запускать каждый раз, когда вы пытаетесь вставить новый узел.

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