Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
32 views4 pages

Tfsnhduh7: Class Def None None Class Def None Def

Uploaded by

johibel889
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
32 views4 pages

Tfsnhduh7: Class Def None None Class Def None Def

Uploaded by

johibel889
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

tfsnhduh7

November 30, 2024

[5]: class node:


def __init__(self,val):
self.lchild=None
self.data=val
self.rchild=None
class btree:
def __init__(self):
self.root=None
def insert(self,val):
temp=node(val)
trv=self.root
if self.root is None:
self.root=temp
return
else:
while True:
if(val > trv.data):
if trv.rchild is None:
trv.rchild=temp
return
else:
trv=trv.rchild
else:
if trv.lchild is None:
trv.lchild=temp
return
else:
trv=trv.lchild

def search(self,key):
trv=self.root
while True:
if trv is None:
return False
if trv.data==key:
return True
if trv.data<key:

1
trv=trv.rchild
else:
trv=trv.lchild

def searchR(self, root, key):


if root is None:
return False
elif key < root.data:
return self.search(root.lchild,key)
elif key > root.data:
return self.search(root.rchild,key)
else:
if root.data==key:
return True
else:
return False

def inorder(self,rt):
if rt is not None:
self.inorder(rt.lchild)
print(rt.data,end=" ")
self.inorder(rt.rchild)
def preorder(self,rt):
if rt is not None:
print(rt.data,end=" ")
self.preorder(rt.lchild)
self.preorder(rt.rchild)
def postorder(self,rt):
if rt is not None:
self.postorder(rt.lchild)
self.postorder(rt.rchild)
print(rt.data,end=" ")
def inorder_traversal(self):
stack = []
current = self.root
result = []
while current or stack:
while current:
stack.append(current)
current = current.lchild
current = stack.pop()
result.append(current.data)
current = current.rchild
return result
def preorder_traversal(self):
if not self.root:
return []

2
stack, result = [self.root], []
while stack:
node = stack.pop()
result.append(node.data)

# Push right child first so that left is processed first


if node.rchild:
stack.append(node.rchild)
if node.lchild:
stack.append(node.lchild)

return result
def post_order_traversal(self):
if self.root is None:
return []

stack1 = []
stack2 = []
stack1.append(self.root)

while stack1:
node = stack1.pop()
stack2.append(node)

if node.lchild:
stack1.append(node.lchild)
if node.rchild:
stack1.append(node.rchild)

result = []
while stack2:
node = stack2.pop()
result.append(node.data)

return result

bst=btree()
bst.insert(10)
bst.insert(5)
bst.insert(20)
bst.insert(50)
bst.insert(30)
bst.insert(40)
bst.insert(35)
print("Inorder")
#print(bst.inorder_traversal())
bst.inorder(bst.root)

3
#bst.displayInorder()
print("\nPreorder")
#print(bst.preorder_traversal())
bst.preorder(bst.root)
print("\nPostorder")
#print(bst.post_order_traversal())
bst.postorder(bst.root)
print("\nSearch for 10 in the BST:", bst.search(52))

Inorder
5 10 20 30 35 40 50
Preorder
10 5 20 50 30 40 35
Postorder
5 35 40 30 50 20 10
Search for 10 in the BST: False

[ ]: def search(self,key):
trv=self.root
while True:
if trv is None:
return False
if trv.data==key:
return True
if trv.data<key:
trv=trv.rchild
else:
trv=trv.lchild

You might also like