@@ -72,6 +72,16 @@ def __init__(self):
7272 self ._pre_order = []
7373 self ._post_order = []
7474
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+
7585 def inorder (self , root ):
7686 """
7787 in this we traverse first to the leftmost node,
@@ -117,6 +127,24 @@ def postorder(self, root):
117127 self ._post_order .append (root .get_data ())
118128 return self ._post_order
119129
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+
120148 @staticmethod
121149 def get_code ():
122150 """
@@ -359,6 +387,24 @@ def postorder(self):
359387 if self .root is not None :
360388 return self .root .postorder (self .root )
361389
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+
362408 @staticmethod
363409 def get_code ():
364410 """
0 commit comments