Mirror Binary Search Tree
This is a code that given a root of the binary search tree, is to create its mirror. def mirror(root): if root is None: pass else: mirror(root.left)
Solution 1:
It's right, but not very Pythonic.
Better to just write
defmirror(root):
if root isNone:
return
mirror(root.left)
mirror(root.right)
root.left, root.right = root.right, root.left
For this problem, you could recurse in either order (either reversing the leaves before the parents or after).
Solution 2:
Here is my python code to get mirror image of Binary search tree.There might be some incorrect indentations.
#Binary Tree NodeclassNode:
def__init__(self,item):
self.data = item
self.left = None
self.right = None#Binary search treeclassbinarySearchTree:
def__init__(self):
self.root = Node(None)
defmirror(self,node):
if node isNone:
returnFalseelif self.root.data == node:
self.root.left,self.root.right = self.root.right,self.root.left
if self.root.left != None:
self._mirror(self.root.left)
if self.root.right != None:
self._mirror(self.root.right)
else:
return self.root
def_mirror(self,node):
if node isNone:
returnFalseelse:
node.left,node.right = node.right,node.left
if node.left != None:
self._mirror(node.left)
if node.right != None:
self._mirror(node.right)
else:
return node
definorder_traverse(self):
if self.root != None:
self._inorder(self.root)
def_inorder(self,cur):
if cur != None:
if cur.left isnotNone:
self._inorder(cur.left)
print(cur.data)
if cur.right != None:
self._inorder(cur.right)
defmain():
bst = binarySearchTree()
bst.insert(7)
bst.insert(1)
bst.insert(0)
bst.insert(3)
bst.insert(2)
bst.insert(5)
bst.insert(4)
bst.insert(6)
bst.insert(9)
bst.insert(8)
bst.insert(10)
bst.insert(11)
bst.inorder_traverse()
bst.mirror(7)
bst.inorder_traverse()
output:
Post a Comment for "Mirror Binary Search Tree"