document.write('
如果两棵二叉树root1、root2相等,那么root1与root2结点的值相同,同时它们的左右孩子也有着相同的结
构,并且对应位置上结点的值相等,即root1.data=root2.data,并且root1的左子树与root2的左子树相
等,root1的右子树与root2的右子树相等。根据这个条件,可以非常容易地写出判断两棵二叉树是否相等的
递归算法。实现代码如下:
 class BiTNode:
 def __init__(self):
 self.data=None
 self.lchild=None
 self.rcbild=None
 
 """
 方法功能: 判断两棵二叉树是否相等
 参数: root1与root2分别为两棵二叉树的根结点
 返回值: true:如果两棵树相等则返回true, 否则返回false
 """
 def isEqual(root1,root2):
 if root1==None and root2==None:
 return True
 if root1==None and root2!=None:
 return False
 if root1!=None and root2==None:
 return False
 if root1.data==root2.data:
 return isEqual(root1.lchild,root2.lchild) and isEqual(root1.rchild,root2.rchild)
 else:
 return False
 
 def constructTree():
 root=BiTNode()
 node1=BiTNode()
 node2=BiTNode()
 node3=BiTNode()
 node4=BiTNode()
 root.data=6
 node1.data=3
 node2.data=-7
 node3.data=-1
 node4.data=9
 root.lchild=node1
 root.rchild=node2
 nodel.lchild=node3
 nodel.rchild=node4
 node2.lchild=node2.rchild=node3.lchild=node3.rchild=\\
 node4.lchild=node4.rchild=None
 return root
 
 if __name__=="__main__":
 root1=constructTree()
 root2=constructTree()
 equal=isEqual(root1,root2)
 if equal:
 print "这两棵树相等"
 else:
 print "这两棵树不相等"
 程序的运行结果为:
 这两棵树相等
 算法性能分析:

 这种方法对两棵树只进行了一次遍历,因此,时间复杂度为O(N)。此外,这种方法没有申请额外的存储空间。 

');