Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- def Add_Node(Tree, Node):
- if Tree[1] > Node:
- if Tree[0] == None:
- Tree[0] = [None, Node, None]
- else:
- Tree[0] = Add_Node(Tree[0], Node)
- elif Tree[1] <= Node:
- if Tree[2] == None:
- Tree[2] = [None, Node, None]
- else:
- Tree[2] = Add_Node(Tree[2], Node)
- return Tree
- def Delete_Node(Tree, Node):
- if Tree[1] < Node:
- Tree[2] = Delete_Node(Tree[2], Node)
- elif Tree[1] > Node:
- Tree[0] = Delete_Node(Tree[0], Node)
- else:
- if Tree[0] == None and Tree[2] == None:
- return None
- elif Tree[0] == None:
- return Tree[2]
- elif Tree[2] == None:
- return Tree[0]
- else:
- temp, Tree = Delete_2Node(Tree, Node)
- Tree[1] = temp
- return Tree
- def Delete_2Node(Tree, Node):
- if Tree[1] == Node:
- temp, Tree[2] = Delete_2Node(Tree[2], Node)
- elif Tree[0] != None:
- temp, Tree[0] = Delete_2Node(Tree[0], Node)
- elif Tree[0] == None and Tree[2] == None:
- temp = Tree[1]
- Tree = Delete_Node(Tree, temp)
- elif Tree[0] == None:
- temp = Tree[1]
- Tree = Tree[2]
- return temp, Tree
- def Print_Tree(Deep, Tree):
- if Tree:
- Print_Tree(Deep + 1, Tree[2])
- print(" " * Deep * 4, Tree[1])
- Print_Tree(Deep + 1, Tree[0])
- def Straight_Detour(Tree, Mas):
- Mas.append(Tree[1])
- if Tree[0] != None:
- Straight_Detour(Tree[0], Mas)
- if Tree[2] != None:
- Straight_Detour(Tree[2], Mas)
- return Mas
- def Reverse_Detour(Tree, Mas):
- if Tree[0] != None:
- Reverse_Detour(Tree[0], Mas)
- if Tree[2] != None:
- Reverse_Detour(Tree[2], Mas)
- Mas.append(Tree[1])
- return Mas
- def Dymmetric_Detour(Tree, Mas):
- if Tree[0] != None:
- Dymmetric_Detour(Tree[0], Mas)
- Mas.append(Tree[1])
- if Tree[2] != None:
- Dymmetric_Detour(Tree[2], Mas)
- return Mas
- def Find_Node(Tree, Root):
- if Root > Tree[1]:
- if Tree[2] != None:
- return Find_Node(Tree[2], Root)
- return False
- elif Root < Tree[1]:
- if Tree[0] != None:
- return Find_Node(Tree[0], Root)
- return False
- elif Root == Tree[1]:
- return True
- # Digits = [random.randint(1, 100) for x in range(10)]
- Digits = [19, 13, 33, 3, 17, 15, 18, 31, 35, 42, 32]
- Tree = [None, Digits.pop(0), None]
- for i in Digits:
- Tree = Add_Node(Tree, i)
- print("Исходное дерево:")
- Print_Tree(1, Tree)
- t = int(input("Удалить элемент:"))
- if Find_Node(Tree, t):
- print("\nЭлемент {} найден в дереве".format(t),'\n')
- Tree = Delete_Node(Tree, t)
- print("Дерево после удаления:")
- Print_Tree(1, Tree)
- else:
- print("\nЭлемент {} отсутствует".format(t),'\n')
- print("Прямой обход:", Straight_Detour(Tree, []),'\n')
- print("Обратный обход:", Reverse_Detour(Tree, []),'\n')
- print("Симметричный обход:", Dymmetric_Detour(Tree, []))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement