document.write('
用给定的二叉树的根结点root来构造新的二叉树的方法为:首先创建新的结点dupTree,然后根据root
结点来构造dupTree结点(dupTree.data=root.data),最后分别用root的左右子树来构造dupTree的
左右子树。根据这个思路可以实现二叉树的复制,使用递归方式实现的代码如下:
 class BiTNode:
 def __init__(self):
 self.data=None
 self.lchild=None
 self.rchild=None
 
 def createDupTree(root):
 if root==None:
 return None
 #二叉树根结点
 dupTree=BiTNode()
 dupTree.data=root.data
 #复制左予树
 dupTree.lchild=createDupTree(root.lchild)
 #复制右予树
 dupTree.rchild=createDupTree(root.rchild)
 return dupTree
 
 def printTreeMidOrder(root):
 if root==None:
 return
 #遍历root结点的左予树
 if root.lchild!=None:
 printTree MidOrder(root.lchild)
 #遍历root结点
 print root.data,
 #遍历root结点的右子树
 if root.rchild!=None:
 printTreeMidOrder(root.rchild)
 if __name__=="__main__":
 root1=constructTree()
 root2=createDupTree(root1)
 print "原始二叉树中序遍历:",
 printTreeMidOrder (root1)
 print \'\\n\'
 print"新的二叉树中序遍历:",
 printTreeMidOrder(root2)
 程序的运行结果为:
 原始二叉树中序遍历:-1 3 9 6 -7
 新的二叉树中序遍历:-1 3 9 6 -7
 算法性能分析:
 这种方法对给定的二叉树进行了一次遍历,因此,时间复杂度为O(N),此外,这种方法需要申请N个
额外的存储空间来存储新的二叉树。

 

');