@@ -72,6 +72,16 @@ def __init__(self):
72
72
self ._pre_order = []
73
73
self ._post_order = []
74
74
75
+ def insert (self , data ):
76
+ """
77
+ insert data to root or create a root node
78
+ """
79
+ if self .root :
80
+ self .root .set_data (data )
81
+ else :
82
+ self .root = Node ()
83
+ self .root .set_data (data )
84
+
75
85
def inorder (self , root ):
76
86
"""
77
87
in this we traverse first to the leftmost node,
@@ -117,6 +127,24 @@ def postorder(self, root):
117
127
self ._post_order .append (root .get_data ())
118
128
return self ._post_order
119
129
130
+ def number_of_nodes (self , root ):
131
+ """
132
+ counting number of nodes
133
+ """
134
+ # need testing
135
+ left_number = 0 ;
136
+ right_number = 0 ;
137
+
138
+ #number of nodes left side
139
+ if root .get_left ():
140
+ left_number = self .number_of_nodes (root .get_left ())
141
+
142
+ #numbeof nodes right side
143
+ if root .get_right ():
144
+ right_number = self .number_of_nodes (root .get_right ())
145
+
146
+ return left_number + right_number + 1
147
+
120
148
@staticmethod
121
149
def get_code ():
122
150
"""
@@ -359,6 +387,24 @@ def postorder(self):
359
387
if self .root is not None :
360
388
return self .root .postorder (self .root )
361
389
390
+ def number_of_nodes (self , root ):
391
+ """
392
+ counting number of nodes
393
+ """
394
+ # need testing
395
+ left_number = 0 ;
396
+ right_number = 0 ;
397
+
398
+ #number of nodes left side
399
+ if root .get_left ():
400
+ left_number = self .number_of_nodes (root .get_left ())
401
+
402
+ #numbeof nodes right side
403
+ if root .get_right ():
404
+ right_number = self .number_of_nodes (root .get_right ())
405
+
406
+ return left_number + right_number + 1
407
+
362
408
@staticmethod
363
409
def get_code ():
364
410
"""
0 commit comments