-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtreelvlord.py
82 lines (66 loc) · 1.62 KB
/
treelvlord.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#! /usr/bin/env python3
class Node:
def __init__(self, info):
self.info = info
self.left = None
self.right = None
self.level = None
def __str__(self):
return str(self.info)
class BinarySearchTree:
def __init__(self):
self.root = None
def create(self, val):
if self.root == None:
self.root = Node(val)
else:
current = self.root
while True:
if val < current.info:
if current.left:
current = current.left
else:
current.left = Node(val)
break
elif val > current.info:
if current.right:
current = current.right
else:
current.right = Node(val)
break
else:
break
"""
Node is defined as
self.left (the left child of the node)
self.right (the right child of the node)
self.info (the value of the node)
"""
import queue
def levelOrder(root):
q = queue.SimpleQueue()
if not root:
return
q.put(root)
while not q.empty():
current = q.get()
print(f'{current.info} ', end='')
if current.left:
q.put(current.left)
if current.right:
q.put(current.right)
print()
'''
Testing:
# Input:
6
1 2 5 3 6 4
# Output:
1 2 5 3 6 4
'''
tree = BinarySearchTree()
t = int(input())
arr = list(map(int, input().split()))
for i in range(t):
tree.create(arr[i])
levelOrder(tree.root)