国产探花免费观看_亚洲丰满少妇自慰呻吟_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)            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 比如县| 灵石县| 民县| 博爱县| 麟游县| 香格里拉县| 西乌珠穆沁旗| 建瓯市| 红河县| 那坡县| 楚雄市| 山阴县| 汶川县| 勐海县| 高安市| 荥经县| 锦屏县| 江门市| 洛宁县| 喀什市| 锦屏县| 太康县| 平罗县| 新安县| 夹江县| 方山县| 泾阳县| 新源县| 宁德市| 光山县| 滁州市| 盐亭县| 普安县| 嵊泗县| 亳州市| 旅游| 徐闻县| 郸城县| 房山区| 都昌县| 沂南县|