class BinaryTree: def __init__(self, root): self.root = root self.leftChild = None self.rightChild = None def setRoot(self, root): self.root = root def getRoot(self): return self.root def getLeftChild(self): return self.leftChild def getRightChild(self): return self.rightChild def insertLeftChild(self, newNode): if self.leftChild == None: self.leftChild = BinaryTree(newNode) else: t = BinaryTree(newNode) t.leftChild = self.leftChild self.leftChild = t def insertRightChild(self, newNode): if self.rightChild == None: self.rightChild = BinaryTree(newNode) else: t = BinaryTree(newNode) t.rightChild = self.rightChild self.rightChild = t def isStructurallyIdentical(tree1,tree2): if tree1 == None and tree2 == None: return True if tree1 == None or tree2 == None: return False return (tree1.root == tree2.root and isStructurallyIdentical(tree1.getLeftChild(), tree2.getLeftChild()) and isStructurallyIdentical(tree1.getRightChild(), tree2.getRightChild()) ) if __name__ == "__main__": r = BinaryTree(5) r.insertLeftChild(6) r.insertRightChild(7) r.leftChild.insertLeftChild(12) r.leftChild.insertRightChild(54) r.rightChild.insertRightChild(63) t = BinaryTree(5) t.insertLeftChild(6) t.insertRightChild(7) t.leftChild.insertLeftChild(12) t.leftChild.insertRightChild(54) t.rightChild.insertRightChild(63) print isStructurallyIdentical(t,r)
Pingback: Tree Walks and Traversals | codeatsociallywired