Skip to content
This repository was archived by the owner on Feb 3, 2025. It is now read-only.

Commit 34c410d

Browse files
committed
XD
1 parent 28f0da7 commit 34c410d

File tree

2 files changed

+108
-5
lines changed

2 files changed

+108
-5
lines changed

Node.py

Lines changed: 56 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import collections
22

3+
NodesBeenMade = 0
34

45
class Node :
56
def __init__(self , data ) :
@@ -26,25 +27,31 @@ def PrintTree(self , trav_type) :
2627
def preorder_tree(self , start , trav) :
2728
## ROOT > LEFT > RIGHT
2829
if start :
29-
trav += (str(start.data) + "__" )
30+
global NodesBeenMade
31+
NodesBeenMade +=1
32+
trav += (str(start.data) + "," )
3033
trav = self.preorder_tree(start.left , trav)
3134
trav = self.preorder_tree(start.right , trav)
3235
return trav
3336

3437
def inorder_tree(self , start , trav) :
3538
## LEFT > ROOT > RIGHT
3639
if start :
40+
global NodesBeenMade
41+
NodesBeenMade +=1
3742
trav = self.inorder_tree(start.left , trav)
38-
trav += (str(start.data) + "__")
43+
trav += (str(start.data) + ",")
3944
trav = self.inorder_tree(start.right , trav)
4045
return trav
4146

4247
def postorder_tree(self , start , trav) :
4348
## LEFT > RIGHT > ROOT
4449
if start :
50+
global NodesBeenMade
51+
NodesBeenMade +=1
4552
trav = self.postorder_tree(start.left , trav)
4653
trav = self.postorder_tree(start.right , trav)
47-
trav += (str(start.data) + "__")
54+
trav += (str(start.data) + ",")
4855
return trav
4956
def levelorder_tree(self , start) :
5057
ans = []
@@ -70,7 +77,32 @@ def levelorder_tree(self , start) :
7077
queue.append(currNode.right)
7178
ans.append(currList)
7279
return ans
80+
81+
def floors_number(self) :
82+
result = tree.PrintTree("levelorder")
83+
return len(result)
84+
85+
def delete_tree(self) :
86+
tree.root = None
87+
88+
def MAX_MIN(self) :
89+
result = tree.PrintTree("preorder")
90+
result = result.split(",")
91+
result.pop()
92+
result = [int(x) for x in result ]
93+
return max(result),min(result)
94+
95+
def find(self , atribute) :
96+
result = tree.PrintTree("levelorder")
97+
x = 0
98+
for i in result :
99+
x +=1
100+
for j in i :
101+
if j == atribute :
102+
return x
103+
73104

105+
74106

75107
"""_summary_
76108
2
@@ -82,12 +114,31 @@ def levelorder_tree(self , start) :
82114
[3.4]
83115
[5,6]
84116
"""
85-
117+
# made a binary tree -> 1
118+
# node class -> 1
119+
# insert method -> 1
120+
# NodesBeenMade for number of nodes -> 1
121+
# number of floors -> 1
122+
# how to define number of leaves -> 0
123+
# made the 4 method and its working -> 1
124+
# delete the tree -> 1
125+
# MAX and MIN in our tree -> 1
126+
# full tree -> 0
127+
# compare of two tree -> 0
128+
129+
86130

87131
tree = BinaryTree(2)
88132
tree.root.left = Node(3)
89133
tree.root.right = Node(4)
90134
tree.root.left.left = Node(5)
91135
tree.root.left.right = Node(6)
92136

93-
print(tree.PrintTree("levelorder"))
137+
138+
139+
140+
print(tree.PrintTree("levelorder"))
141+
result = tree.MAX_MIN()
142+
print("MAX and MIN is equal to : " , result)
143+
x = tree.find(5)
144+
print("Found the desired element at the : [" , x , "] floor ")

graphical.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
class TreeNode:
2+
def __init__(self, val, left=None, right=None):
3+
self.val = val
4+
self.left = left
5+
self.right = right
6+
def __repr__(self):
7+
return 'TreeNode({})'.format(self.val)
8+
9+
def deserialize(string):
10+
if string == '{}':
11+
return None
12+
nodes = [None if val == 'null' else TreeNode(int(val))
13+
for val in string.strip('[]{}').split(',')]
14+
kids = nodes[::-1]
15+
root = kids.pop()
16+
for node in nodes:
17+
if node:
18+
if kids: node.left = kids.pop()
19+
if kids: node.right = kids.pop()
20+
return root
21+
22+
def drawtree(root):
23+
def height(root):
24+
return 1 + max(height(root.left), height(root.right)) if root else -1
25+
def jumpto(x, y):
26+
t.penup()
27+
t.goto(x, y)
28+
t.pendown()
29+
def draw(node, x, y, dx):
30+
if node:
31+
t.goto(x, y)
32+
jumpto(x, y-20)
33+
t.write(node.val, align='center', font=('Arial', 12, 'normal'))
34+
draw(node.left, x-dx, y-60, dx/2)
35+
jumpto(x, y-20)
36+
draw(node.right, x+dx, y-60, dx/2)
37+
import turtle
38+
t = turtle.Turtle()
39+
t.speed(0); turtle.delay(0)
40+
h = height(root)
41+
jumpto(0, 30*h)
42+
draw(root, 0, 30*h, 40*h)
43+
t.hideturtle()
44+
turtle.mainloop()
45+
46+
if __name__ == '__main__':
47+
drawtree(deserialize('[2,5,1,7,2,3,4,5,9]'))
48+
49+
50+
51+
# BINARY TREE EXPLANTION
52+

0 commit comments

Comments
 (0)