栈、队列、链表、二叉树

本文深入讲解了多种数据结构,包括栈、队列、双端队列、单链表、双链表以及二叉树的实现与操作。通过具体的Python代码示例,详细介绍了这些数据结构的构建方式,如插入、删除、查询等基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# stack 栈  LIFO 后进先出(先进后出First In Last Out)
class Stack(object):
    def __init__(self):
        self.items = []
    #isEmpty
    def isEmpty(self):
        return self.items == []
    #push
    def append(self, item):
        self.items.append(item)
    #pop
    def pop(self):
        return self.items.pop()
    #peek
    def peek(self):
        return self.items[-1]
    #size
    def size(self):
        return len(self.items)
#queue 队列 FIFO
class Queue(object):
    def __init__(self):
        self.items = []
    def isEmpty(self):
        return self.items == []
    def enqueque(self, item):
        self.items.insert(0,item)
    def dequeque(self):
        return self.items.pop()
    def peek(self):
        return self.items[-1]
    def size(self):
        return len(size.items)
#双端队列  
class DoubleQueue(object):
    def __init__(self):
        self.items = []
    def isEmpty(self):
        return self.items == []
    def addRear(self,value):
        self.items.insert(0,value)
    def addFront(self,value):
        self.items.append(value)
    def removeFront(self):
        return self.items.pop()
    def removeRear(self):
        return self.items.pop(0)
    def size(self):
        return len(self.items)
#singly linked list  单链表
class SinglyLinkedList(object):
    def __init__(self,value):
        self.value = value
        self.nextnode = None
        
a = SinglyLinkedList(1)
b = SinglyLinkedList(2)
c = SinglyLinkedList(3)

a.nextnode = b
b.nextnode = c
#doubly linked list双链表
class DoublyLinkedList(object):
    def __init__(self,value):
        self.value = value
        self.nextnode = None
        self.prevnode = None
        
a = DoublyLinkedList(1)
b = DoublyLinkedList(2)
c = DoublyLinkedList(3)

a.nextnode = b
b.prevnode = a
b.nextnode = c
c.prevnode = b
# Tree
#1.list构建  [root, [left], [right]]
#2.class构建

#创建二叉树  
def binary_tree(r):
    return [r, [], []]

def insert_left(root,newBranch):
    t = root.pop(1)
    if len(t) > 1:
        root.insert(1, [newBranch,t,[]])
    else:
        root.insert(1,[newBranch,[],[]])
    return root

def insert_right(root,newBranch):
    t = root.pop(2)
    if len(t) > 1:
        root.insert(2, [newBranch,[],t])
    else:
        root.insert(2,[newBranch,[],[]])    
    return root

def get_root_value(root):
    return root[0]

def set_root_value(root,newvalue):
    root[0] = newvalue
    
def get_left_child(root):
    return root[1]

def get_right_child(root):
    return root[2]

在这里插入图片描述

# class 构建 Tree
class BinaryTree(object):
    def __init__(self,rootObj):
        self.key = rootObj
        self.leftChild = None
        self.rightChild = None
        
    def insert_leftchild(self,newbranch):
        if self.leftChild == None:
            self.leftChild = BinaryTree(newbranch)
        else:
            t = BinaryTree(newbranch)
            t.leftChild = self.leftChild
            self.leftChild = t
            
    def insert_rightchild(self,newbranch):
        if self.rightChild == None:
            self.rightChild = BinaryTree(newbranch)
        else:
            t = BinaryTree(newbranch)
            t.rightChild = self.rightChild
            self.rightChild = t
            
    def get_leftchild(self):
        return self.leftChild
    
    def get_rightchild(self):
        return self.rightChild
    
    def set_rootvalue(self,value):
        self.key = value
        
    def get_rootvalue(self):
        return self.key

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值