数据结构之二叉树(python实现)

#创建二叉树,
class Node:
    def __init__(self,data):
        self.left=None
        self.right=None
        self.data=data
    #插入数据
    def insert(self,data):
        if(self.data):
            if(data<self.data):
                if(self.left is None):
                    self.left=Node(data)
                else:
                    self.left.insert(data)
            elif(data>self.data):
                if(self.right is None):
                    self.right=Node(data)
                else:
                    self.right.insert(data)
        else:
            self.data=data
    #打印根节点
    def printdata(self):
        print(self.data)
    #深度优先遍历:包含前序遍历,中序遍历,后序遍历
    #前序遍历:根节点,左子树,右子树
    def fore(self):
        if(self.data):
            print(self.data)
        if(self.left):
            self.left.fore()
        if(self.right):
            self.right.fore()
    #中序遍历:左子树,根节点,右子树
    def mid(self):
        if(self.left):
            self.left.mid()
        print(self.data)
        if(self.right):
            self.right.mid()
    #后序遍历:左子树,右子树,根节点
    def back(self):
        if(self.left):
            self.left.back()
        if(self.right):
            self.right.back()
        print(self.data)
    #广度优先遍历:包含层序遍历
    #层序遍历:层次关系横向遍历
    def ceng(self,root):
        queue = []
        cur = [root]
        while cur:
            cur_layer_val = []
            next_layer_node = []
            for node in cur:
                if node:
                    cur_layer_val.append(node.data)
                    next_layer_node.extend([node.left, node.right])
            if cur_layer_val:
                queue.insert(0, cur_layer_val)
            cur = next_layer_node
        print(queue)
#初始化根节点
root=Node(5)
#插入节点
root.insert(4)
root.insert(7)
root.insert(3)
root.insert(8)
#根节点
root.printdata()
#前序遍历
root.fore()
#中序遍历
root.mid()
#后序遍历
root.back()
#层序遍历
root.ceng(root)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值