数据结构 树的链表实现

第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 ********** #

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值