Python实现一个二叉树类

最近在学习Python,之前只是在写脚本,做一些数据处理的工作,今天开始看Python的面向对象,熟悉了语法之后,想实现一个二叉树类练练手。

以前写C++比较多,用Python写二叉树好不习惯,没有指针,没有引用!!!


所以我就遇到了一下几个问题:

1、该怎么把二叉树各个节点连起来?

2、怎么定义内部数据成员?

3、如何实例化左右孩子?


在网上也没找到比较简单比较通用的Python二叉树类实现,所以我花了点时间自己写一个。

class Tree:
    def __init__(self, val = '#', left = None, right = None):
        self.val = val
        self.left = left
        self.right = right

    #前序构建二叉树
    def FrontBuildTree(self):
        temp = input('Please Input: ')
        node = Tree(temp)
        if(temp != '#'):
            node.left = self.FrontBuildTree()
            node.right = self.FrontBuildTree()
        return node#因为没有引用也没有指针,所以就把新的节点给返回回去
    
    #前序遍历二叉树
    def VisitNode(self):
        print(self.val)
        if(self.val != '#'):
            self.left.VisitNode()
            self.right.VisitNode()

if __name__ == '__main__':
    root = Tree()
    root = root.FrontBuildTree()
    root.VisitNode()

有什么不对的地方,还请多指教!

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值