File tree Expand file tree Collapse file tree 8 files changed +337
-11
lines changed
Expand file tree Collapse file tree 8 files changed +337
-11
lines changed Original file line number Diff line number Diff line change 1+ class Node :
2+ def __init__ (self , data ):
3+ self .data = data
4+ self .left = None
5+ self .right = None
6+
7+
8+ def findMaximum (root ):
9+
10+ if root is None :
11+ return 0
12+
13+ else :
14+
15+ maximum = root .data
16+ if root .left :
17+ left_max = findMaximum (root .left )
18+ maximum = max (maximum , left_max )
19+
20+ if root .right :
21+ right_max = findMaximum (root .right )
22+ maximum = max (maximum , right_max )
23+
24+ return maximum
25+
26+
27+ def findMinimum (root ):
28+
29+ if root is None :
30+ return 0
31+
32+ else :
33+
34+ minimum = root .data
35+
36+ if root .left :
37+ left_min = findMinimum (root .left )
38+ minimum = min (minimum , left_min )
39+
40+ if root .right :
41+ right_min = findMinimum (root .right )
42+ minimum = min (minimum , right_min )
43+
44+ return minimum
45+
46+
47+
48+ tree = Node (1 )
49+ tree .left = Node (2 )
50+ tree .right = Node (3 )
51+ print ('the maximum nodes value is: ' )
52+ print (findMaximum (tree ))
53+ print ('the minimum nodes value is: ' )
54+ print (findMinimum (tree ))
Original file line number Diff line number Diff line change 1+ class Node :
2+ def __init__ (self , data ):
3+ self .data = data
4+ self .left = None
5+ self .right = None
6+
7+
8+ def height (root ):
9+
10+ if root is None :
11+ return 0
12+
13+ else :
14+
15+ return 1 + max (height (root .left ), height (root .right ))
16+
17+
18+ tree = Node (1 )
19+ tree .left = Node (2 )
20+ tree .right = Node (3 )
21+ tree .left .left = Node (4 )
22+ print ('the height of the tree: ' )
23+ print (height (tree ))
24+
Original file line number Diff line number Diff line change 1+ class Node :
2+ def __init__ (self , data ):
3+ self .data = data
4+ self .left = None
5+ self .right = None
6+
7+
8+ def inorderTraversal (root ):
9+ if root is None :
10+ return None
11+ else :
12+ inorderTraversal (root .left )
13+ print (root .data , end = ' ' )
14+ inorderTraversal (root .right )
15+
16+
17+ def insertion (root , key ):
18+ if not root :
19+ return Node (key )
20+ else :
21+ q = [root ]
22+ while len (q ):
23+ temp = q .pop (0 )
24+ if temp .left is None :
25+ temp .left = Node (key )
26+ return
27+ else :
28+ q .append (temp .left )
29+ if temp .right is None :
30+ temp .right = Node (key )
31+ return
32+ else :
33+ q .append (temp .right )
34+
35+
36+ def deletion (root , key ):
37+ if not root :
38+ return None
39+ if root .left is None and root .right is None :
40+ if root .data == key :
41+ return None
42+ else :
43+ return root
44+ else :
45+ key_node = None
46+ q = [root ]
47+ while len (q ):
48+ temp = q .pop (0 )
49+ if temp .data == key :
50+ key_node = temp
51+ if temp .left :
52+ q .append (temp .left )
53+ if temp .right :
54+ q .append (temp .right )
55+ if key_node :
56+ x = temp .data
57+ deletionHelper (root , temp )
58+ key_node .data = x
59+ return root
60+
61+
62+ def deletionHelper (root , d_node ):
63+ q = [root ]
64+ while len (q ):
65+ temp = q .pop (0 )
66+ if temp .data is d_node :
67+ temp .data = None
68+ return
69+ if temp .left is d_node :
70+ temp .left = None
71+ return
72+ else :
73+ q .append (temp .left )
74+ if temp .right is d_node :
75+ temp .right = None
76+ return
77+ else :
78+ q .append (temp .right )
79+
80+
81+ tree = None
82+ tree = insertion (tree , 1 )
83+ insertion (tree , 2 )
84+ insertion (tree , 3 )
85+ insertion (tree , 4 )
86+ insertion (tree , 5 )
87+ insertion (tree , 6 )
88+ insertion (tree , 7 )
89+ print ('the inorder traversal of the tree: ' )
90+ inorderTraversal (tree )
91+ print ('\n After deletion: ' )
92+ deletion (tree , 2 )
93+ deletion (tree , 4 )
94+ inorderTraversal (tree )
95+
96+
97+
Original file line number Diff line number Diff line change 1+ class Node :
2+ def __init__ (self , data ):
3+ self .data = data
4+ self .left = None
5+ self .right = None
6+
7+
8+ def preorderTraversal (root ):
9+ if root is None :
10+ return None
11+ else :
12+ print (root .data , end = ' ' )
13+ preorderTraversal (root .left )
14+ preorderTraversal (root .right )
15+
16+
17+ def invertTree (root ):
18+
19+ if root is None :
20+ return None
21+
22+ else :
23+ root .left , root .right = root .right , root .left
24+
25+ root .left = invertTree (root .left )
26+ root .right = invertTree (root .right )
27+
28+ return root
29+
30+
31+ tree = Node (1 )
32+ tree .left = Node (2 )
33+ tree .right = Node (3 )
34+ print ('before inverting/mirror_image the tree: ' )
35+ preorderTraversal (tree )
36+ invertTree (tree )
37+ print ('\n after inverting/mirror_image the tree: ' )
38+ preorderTraversal (tree )
39+
Original file line number Diff line number Diff line change 1+ class Node :
2+ def __init__ (self , data ):
3+ self .data = data
4+ self .left = None
5+ self .right = None
6+
7+
8+ def left_view (root ):
9+
10+ if root is None :
11+ return None
12+
13+ else :
14+ q = [root ]
15+
16+ while len (q ):
17+ for i in range (1 , len (q ) + 1 ): # when the value of i==1 then print the popped node
18+ temp = q .pop (0 )
19+ if i == 1 :
20+ print (temp .data , end = ' ' )
21+ if temp .left :
22+ q .append (temp .left )
23+ if temp .right :
24+ q .append (temp .right )
25+
26+
27+
28+ def right_view (root ):
29+
30+ if root is None :
31+ return None
32+
33+ else :
34+ q = [root ]
35+
36+ while len (q ):
37+ for i in range (1 , len (q ) + 1 ): # when the value of i==1 then print the popped node
38+ temp = q .pop (0 )
39+ if i == 1 :
40+ print (temp .data , end = ' ' )
41+ if temp .right :
42+ q .append (temp .right )
43+ if temp .left :
44+ q .append (temp .left )
45+
46+
47+ tree = Node (1 )
48+ tree .left = Node (2 )
49+ tree .right = Node (3 )
50+ tree .left .left = Node (4 )
51+ tree .left .right = Node (5 )
52+ print ('left view of the tree: ' )
53+ left_view (tree )
54+ print ('\n right view of the tree: ' )
55+ right_view (tree )
Original file line number Diff line number Diff line change 1+ class Node :
2+ def __init__ (self , data ):
3+ self .data = data
4+ self .left = None
5+ self .right = None
6+
7+
8+ def levelOrderTraversal (root ):
9+
10+ if root is None :
11+ return None
12+
13+ else :
14+
15+ q = [root ]
16+
17+ while len (q ):
18+ temp = q .pop (0 )
19+ print (temp .data , end = ' ' )
20+ if temp .left :
21+ q .append (temp .left )
22+ if temp .right :
23+ q .append (temp .right )
24+
25+
26+ tree = Node (1 )
27+ tree .left = Node (2 )
28+ tree .right = Node (3 )
29+ tree .left .left = Node (4 )
30+ tree .left .right = Node (5 )
31+ print ('level order traversal: ' )
32+ levelOrderTraversal (tree )
33+
34+
Original file line number Diff line number Diff line change 1+ class Node :
2+ def __init__ (self , data ):
3+ self .data = data
4+ self .left = None
5+ self .right = None
6+
7+
8+ def reverseLevelOrder (root ):
9+ if root is None :
10+ return None
11+ else :
12+ q = [root ] # queue using array
13+ s = [] # stack using array
14+
15+ while len (q ):
16+ temp = q .pop (0 )
17+ s .append (temp )
18+ if temp .left :
19+ q .append (temp .left )
20+ if temp .right :
21+ q .append (temp .right )
22+
23+ while len (s ):
24+ temp = s .pop ()
25+ print (temp .data , end = ' ' )
26+
27+
28+ tree = Node (1 )
29+ tree .left = Node (2 )
30+ tree .right = Node (3 )
31+ tree .left .left = Node (4 )
32+ tree .left .right = Node (5 )
33+ print ('reverse level order traversal:' )
34+ reverseLevelOrder (tree )
Load Diff This file was deleted.
You can’t perform that action at this time.
0 commit comments