Skip to content Skip to sidebar Skip to footer

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:

enter image description here

Post a Comment for "Mirror Binary Search Tree"