-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbinary_tree.py
78 lines (70 loc) · 2.04 KB
/
binary_tree.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
class Node(object):
def __init__(self,data):
self.data=data
self.left=None
self.right=None
count=10
class BinarySearchTree(object):
def __init__(self):
self.root=None
def insert(self,root,node):
if isinstance(node,Node):
if node.data < root.data:
if root.left is None:
root.left=node
else:
self.insert(root.left,node)
elif node.data > root.data:
if root.right is None:
root.right=node
else:
self.insert(root.right,node)
return
# def insert(self,node):
# if isinstance(node,Node):
# if node.data < self.root.data:
# if self.root.left is None:
# self.root.left=node
# else:
# self.root=self.root.left
# self.insert(node)
# elif node.data > self.root.data:
# if self.root.right is None:
# self.root.right=node
# else:
# self.root=self.root.right
# self.insert(node)
def inorder(self,root):
if root:
(self.inorder(root.left))
print(root.data)
(self.inorder(root.right))
def search(self,root,data):
self.root=root
if self.root==None or self.root.data==data:
return self.root
elif self.root.data<data:
self.search(self.root.left,data)
elif self.root.data>data:
self.search(self.root.right,data)
def get_child(self,node):
self.inorder(node)
def delete(self,node):
if node.left is None or node.right is None:
node=None
A0=Node(50)
A=Node(30)
B=Node(20)
C=Node(40)
D=Node(70)
E=Node(60)
F=Node(80)
bst=BinarySearchTree()
root=bst.root=A0
bst.insert(root,A)
bst.insert(root,B)
bst.insert(root,C)
bst.insert(root,D)
bst.insert(root,E)
bst.insert(root,F)
bst.inorder(root)