Python教程之Python实现其他数据结构(堆栈,队列,二叉树)(基于Python3.8)(七)

堆栈

# 堆栈(先进后出)
class Stack:
    # 初始化堆栈
    def __init__(self, data=None):
        if data is None:
            data = []
        self.stack = data

    # 入栈
    def push(self, data):
        self.stack.append(data)

    # 出栈
    def pop(self):
        self.stack.pop()
        return self.stack

    # 展示
    def show(self):
        print("堆栈,自底先上:{}".format(self.stack))

队列

from collections import deque


# 队列(先进先出)
class Queue:
    # 初始化队列
    def __init__(self, data=None):
        if data is None:
            data = []
        self.queue = deque(data)

    # 入队
    def in_queue(self, data):
        self.queue.append(data)

    # 出队
    def out_queue(self):
        self.queue.popleft()

    # 展示
    def show(self):
        print("队列:{}".format(self.queue))

二叉树

# 二叉树
class BinaryTree:
    # 初始化二叉树(根节点)
    def __init__(self, data):
        self.leftNode = None
        self.data = data
        self.rightNode = None

    # 添加左孩子
    def add_left(self, data):
        self.leftNode = BinaryTree(data)
        return self.leftNode

    # 添加右孩子
    def add_right(self, data):
        self.rightNode = BinaryTree(data)
        return self.rightNode

    # 先序遍历(根左右)
    def show1(self):
        if self.data:
            print(self.data, end=" ")
            if self.leftNode:
                BinaryTree.show1(self.leftNode)
            if self.rightNode:
                BinaryTree.show1(self.rightNode)

    # 中序遍历(左根右)
    def show2(self):
        if self.data:
            if self.leftNode:
                BinaryTree.show1(self.leftNode)
            print(self.data, end=" ")
            if self.rightNode:
                BinaryTree.show1(self.rightNode)

    # 后序遍历(左右根)
    def show3(self):
        if self.data:
            if self.leftNode:
                BinaryTree.show1(self.leftNode)
            if self.rightNode:
                BinaryTree.show1(self.rightNode)
            print(self.data, end=" ")
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值