File tree 2 files changed +102
-0
lines changed
data_structures/Binary Tree
2 files changed +102
-0
lines changed Original file line number Diff line number Diff line change 88
88
# Rope project settings
89
89
.ropeproject
90
90
.idea
91
+ .DS_Store
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
+
30
+ class BinarySearchTree :
31
+
32
+ def __init__ (self ):
33
+ self .root = None
34
+
35
+ def insert (self , label ):
36
+
37
+ #Create a new Node
38
+
39
+ node = Node (label )
40
+
41
+ if self .empty ():
42
+ self .root = node
43
+ else :
44
+ dad_node = None
45
+ curr_node = self .root
46
+
47
+ while True :
48
+ if curr_node != None :
49
+
50
+ dad_node = curr_node
51
+
52
+ if node .getLabel () < curr_node .getLabel ():
53
+ curr_node = curr_node .getLeft ()
54
+ else :
55
+ curr_node = curr_node .getRight ()
56
+ else :
57
+ if node .getLabel () < dad_node .getLabel ():
58
+ dad_node .setLeft (node )
59
+ else :
60
+ dad_node .setRight (node )
61
+ break
62
+
63
+ def empty (self ):
64
+ if self .root == None :
65
+ return True
66
+ return False
67
+
68
+ def preShow (self , curr_node ):
69
+ if curr_node != None :
70
+ print (curr_node .getLabel ())
71
+ print ('\n ' )
72
+ self .preShow (curr_node .getLeft ())
73
+ self .preShow (curr_node .getRight ())
74
+
75
+ def getRoot (self ):
76
+ return self .root
77
+
78
+
79
+ '''
80
+ Example
81
+ 8
82
+ / \
83
+ 3 10
84
+ / \ \
85
+ 1 6 14
86
+ / \ /
87
+ 4 7 13
88
+ '''
89
+
90
+ t = BinarySearchTree ()
91
+ t .insert (8 )
92
+ t .insert (3 )
93
+ t .insert (1 )
94
+ t .insert (6 )
95
+ t .insert (4 )
96
+ t .insert (7 )
97
+ t .insert (10 )
98
+ t .insert (14 )
99
+ t .insert (13 )
100
+
101
+ t .preShow (t .getRoot ())
You can’t perform that action at this time.
0 commit comments