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)
Like this:
Like Loading...
Related
Pingback: Tree Walks and Traversals | codeatsociallywired