第1关:结点链接法实现二叉树

# -*- coding: utf-8 -*-
'''请在Begin-End之间补充代码, 完成BinaryTree类'''
class BinaryTree:
# 创建左右子树为空的根结点
def __init__(self,rootObj):
self.key = rootObj # 成员key保存根结点数据项
self.leftChild = None # 成员leftChild初始化为空
self.rightChild = None # 成员rightChild初始化为空
# 把newNode插入到根的左子树
def insertLeft(self,newNode):
if self.leftChild == None:
self.leftChild = BinaryTree(newNode) # 左子树指向由newNode所生成的BinaryTree
else:
t = BinaryTree(newNode) # 创建一个BinaryTree类型的新结点t
t.leftChild = self.leftChild # 新结点的左子树指向原来根的左子树
self.leftChild = t # 根结点的左子树指向结点t
# 把newNode插入到根的右子树
def insertRight(self,newNode):
if self.rightChild == None:
# 右子树指向由newNode所生成的BinaryTree
# ********** Begin ********** #
# ********** End ********** #
else:
# 创建新结点,并将其右子树指向原来根的右子树
# 将根结点的右子树指向新结点
# ********** Begin ********** #
# ********** End ********** #
# 取得右子树,返回值是一个BinaryTree类型的对象
def getRightChild(self):
# ********** Begin ********** #
# ********** End ********** #
# 取得左子树
def getLeftChild(self):
# ********** Begin ********** #
# ********** End ********** #
# 设置根结点的值
def setRootVal(self,obj):
# 将根结点的值赋值为obj
# ********** Begin ********** #
# ********** End ********** #
# 取得根结点的值
def getRootVal(self):
# ********** Begin ********** #
# ********** End ********** #
第2关:建立特定的二叉链表

'''请在Begin-End之间补充代码, 完成相应二叉树的构建'''
class BinaryTree:
# 创建左右子树为空的根结点
def __init__(self,rootObj):
self.key = rootObj # 成员key保存根结点数据项
self.leftChild = None # 成员leftChild初始化为空
self.rightChild = None # 成员rightChild初始化为空
# 把newNode插入到根的左子树
def insertLeft(self,newNode):
if self.leftChild == None:
self.leftChild = BinaryTree(newNode) # 左子树指向由newNode所生成的BinaryTree
else:
t = BinaryTree(newNode) # 创建一个BinaryTree类型的新结点t
t.leftChild = self.leftChild # 新结点的左子树指向原来根的左子树
self.leftChild = t # 根结点的左子树指向结点t
# 把newNode插入到根的右子树
def insertRight(self,newNode):
if self.rightChild == None:
self.rightChild = BinaryTree(newNode) # 右子树指向由newNode所生成的BinaryTree
else:
t = BinaryTree(newNode)
t.rightChild = self.rightChild # 新结点的右子树指向原来根的右子树
self.rightChild = t
# 取得右子树
def getRightChild(self):
return self.rightChild # 返回值是一个BinaryTree类型的对象
# 取得左子树
def getLeftChild(self):
return self.leftChild
# 设置根结点的值
def setRootVal(self,obj):
self.key = obj
# 取得根结点的值
def getRootVal(self):
return self.key
r = BinaryTree('a')
# ********** Begin ********** #
r.insertLeft('b')
r.insertRight('c')
r.getLeftChild().insertRight('d')
r.getRightChild().insertLeft('e')
r.getRightChild().insertRight('f')
# ********** End ********** #