国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python數據結構之棧、隊列及二叉樹定義與用法淺析

2020-02-16 00:21:29
字體:
來源:轉載
供稿:網友

本文實例講述了Python數據結構之棧、隊列及二叉樹定義與用法。分享給大家供大家參考,具體如下:

目前只實現了三種,棧、隊列和二叉樹,哪天得空繼續補吧~

1. 棧

#棧class Stack:  def __init__(self,size = 16):    self.stack = []    self.size = size    self.top = -1  def setSize(self, size):    self.size = size  def isEmpty(self):    if self.top == -1:      return True    else:      return False  def isFull(self):    if self.top +1 == self.size:      return True    else:      return False  def top(self):    if self.isEmpty():      raise Exception("StackIsEmpty")    else:      return self.stack[self.top]  def push(self,obj):    if self.isFull():      raise Exception("StackOverFlow")    else:      self.stack.append(obj)      self.top +=1  def pop(self):    if self.isEmpty():      raise Exception("StackIsEmpty")    else:      self.top -= 1      return self.stack.pop()  def show(self):    print(self.stack)s = Stack(5)s.push(1)s.push(2)s.push(3)s.push(4)s.push(5)s.show()s.pop()s.show()s.push(6)s.show()

運行結果:

2. 隊列

#隊列class Queue:  def __init__(self,size = 16):    self.queue = []    self.size = size    self.front = 0    self.rear = 0  def isEmpty(self):    return self.rear == 0  def isFull(self):    if (self.front - self.rear +1) == self.size:      return True    else:      return False  def first(self):    if self.isEmpty():      raise Exception("QueueIsEmpty")    else:      return self.queue[self.front]  def last(self):    if self.isEmpty():      raise Exception("QueueIsEmpty")    else:      return self.queue[self.rear]  def add(self,obj):    if self.isFull():      raise Exception("QueueOverFlow")    else:      self.queue.append(obj)      self.rear += 1  def delete(self):    if self.isEmpty():      raise Exception("QueueIsEmpty")    else:      self.rear -=1      return self.queue.pop(0)  def show(self):    print(self.queue)q = Queue(3)q.add(1)q.add(2)q.show()q.delete()q.show()

運行結果:

3. 二叉樹

#隊列class Queue:  def __init__(self,size = 16):    self.queue = []    self.size = size    self.front = 0    self.rear = 0  def isEmpty(self):    return self.rear == 0  def isFull(self):    if (self.front - self.rear +1) == self.size:      return True    else:      return False  def first(self):    if self.isEmpty():      raise Exception("QueueIsEmpty")    else:      return self.queue[self.front]  def last(self):    if self.isEmpty():      raise Exception("QueueIsEmpty")    else:      return self.queue[self.rear]  def add(self,obj):    if self.isFull():      raise Exception("QueueOverFlow")    else:      self.queue.append(obj)      self.rear += 1  def delete(self):    if self.isEmpty():      raise Exception("QueueIsEmpty")    else:      self.rear -=1      return self.queue.pop(0)  def show(self):    print(self.queue)#二叉樹class BinaryTreeNode:  def __init__(self,data,left,right):    self.left = left    self.data = data    self.right = rightclass BinaryTree:  def __init__(self):    self.root = None  def makeTree(self,data,left,right):    self.root = BinaryTreeNode(data,left,right)    #left.root = right.root = None  def isEmpty(self):    if self.root is None:      return True    else:      return False  def preOrder(self,r):    if r.root is not None:      print(r.root.data)      if r.root.left is not None:        self.preOrder(r.root.left)      if r.root.right is not None:        self.preOrder(r.root.right)  def inOrder(self,r):    if r.root is not None:      if r.root.left is not None:        self.inOrder(r.root.left)      print(r.root.data)      if r.root.right is not None:        self.inOrder(r.root.right)  def postOrder(self,r):    if r.root is not None:      if r.root.left is not None:        self.preOrder(r.root.left)      if r.root.right is not None:        self.preOrder(r.root.right)      print(r.root.data)  def levelOrder(self,a):    q = Queue()    r = a    while r is not None:      print(r.root.data)      if r.root.left is not None:        q.add(r.root.left)      if r.root.right is not None:        q.add(r.root.right)      if q.isEmpty():        print("empty")        r = None      else:        r = q.delete()r = BinaryTree()ra = BinaryTree()ra.makeTree(2,None,None)rb = BinaryTree()rb.makeTree(3,None,None)r.makeTree(1,ra,rb)print("前序遍歷")r.preOrder(r)print("中序遍歷")r.inOrder(r)print("后序遍歷")r.postOrder(r)print("層級遍歷")r.levelOrder(r)            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昂仁县| 来安县| 彰化县| 岢岚县| 安龙县| 稻城县| 大足县| 池州市| 托克逊县| 安泽县| 柳林县| 郓城县| 金华市| 屯昌县| 阳原县| 抚松县| 科技| 贵南县| 弥勒县| 旺苍县| 丰都县| 柘荣县| 阿瓦提县| 梁平县| 石景山区| 鄂州市| 晴隆县| 七台河市| 垫江县| 自治县| 饶阳县| 金寨县| 襄城县| 清新县| 惠东县| 精河县| 长宁区| 绥阳县| 晋城| 会昌县| 浦北县|