题目描述:给定一个二叉树根节点,复制该树,返回新建树的根节点。
分析与解答:用给定的二叉树的根节点root来构造新的二叉树的方法为:首先创建新的结点dupTree,然后根据root结点来构造dupTree结点,最后分别用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:
printTreeMidOrder(root.lchild)
# 遍历Root结点的右子树
if root.rchild != None:
printTreeMidOrder(root.rchild)
print(root.data)