File tree 1 file changed +104
-0
lines changed
data_structures/Binary Tree
1 file changed +104
-0
lines changed Original file line number Diff line number Diff line change
1
+ '''
2
+ A binary search Tree
3
+ '''
4
+ class Node :
5
+
6
+ def __init__ (self , label ):
7
+ self .label = label
8
+ self .left = None
9
+ self .rigt = None
10
+
11
+ def getLabel (self ):
12
+ return self .label
13
+
14
+ def setLabel (self , label ):
15
+ self .label = label
16
+
17
+ def getLeft (self ):
18
+ return self .left
19
+
20
+ def setLeft (self , left ):
21
+ self .left = left
22
+
23
+ def getRight (self ):
24
+ return self .rigt
25
+
26
+ def setRight (self , right ):
27
+ self .rigt = right
28
+
29
+ def sassLabel (self , label ):
30
+ self .label = label
31
+
32
+
33
+ class BinarySearchTree :
34
+
35
+ def __init__ (self ):
36
+ self .root = None
37
+
38
+ def insert (self , label ):
39
+
40
+ #Create a new Node
41
+
42
+ node = Node (label )
43
+
44
+ if self .empty ():
45
+ self .root = node
46
+ else :
47
+ dad_node = None
48
+ curr_node = self .root
49
+
50
+ while True :
51
+ if curr_node != None :
52
+
53
+ dad_node = curr_node
54
+
55
+ if node .getLabel () < curr_node .getLabel ():
56
+ curr_node = curr_node .getLeft ()
57
+ else :
58
+ curr_node = curr_node .getRight ()
59
+ else :
60
+ if node .getLabel () < dad_node .getLabel ():
61
+ dad_node .setLeft (node )
62
+ else :
63
+ dad_node .setRight (node )
64
+ break
65
+
66
+ def empty (self ):
67
+ if self .root == None :
68
+ return True
69
+ return False
70
+
71
+ def preShow (self , curr_node ):
72
+ if curr_node != None :
73
+ print (curr_node .getLabel (), end = " " )
74
+
75
+ self .preShow (curr_node .getLeft ())
76
+ self .preShow (curr_node .getRight ())
77
+
78
+ def getRoot (self ):
79
+ return self .root
80
+
81
+
82
+ '''
83
+ Example
84
+ 8
85
+ / \
86
+ 3 10
87
+ / \ \
88
+ 1 6 14
89
+ / \ /
90
+ 4 7 13
91
+ '''
92
+
93
+ t = BinarySearchTree ()
94
+ t .insert (8 )
95
+ t .insert (3 )
96
+ t .insert (1 )
97
+ t .insert (6 )
98
+ t .insert (4 )
99
+ t .insert (7 )
100
+ t .insert (10 )
101
+ t .insert (14 )
102
+ t .insert (13 )
103
+
104
+ t .preShow (t .getRoot ())
You can’t perform that action at this time.
0 commit comments