Python笔记——几种数据结构的实现:栈、队列及二叉树
来源:互联网 发布:福建广播电视网络 编辑:程序博客网 时间:2024/06/07 07:38
目前只实现了三种,栈、队列和二叉树,哪天得空继续补吧~
毕设忙晕了~~
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 BinaryTreeNode:
- def __init__(self,data,left,right):
- self.left = left
- self.data = data
- self.right = right
- class 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)
运行结果:
后续实现了会慢慢补上~~旧的也会不断改进,希望大家多多给意见~~
阅读全文
0 0
- Python笔记——几种数据结构的实现:栈、队列及二叉树
- Python笔记——几种数据结构的实现:栈、队列及二叉树
- Python笔记——几种数据结构的实现:栈、队列及二叉树
- Python笔记——几种数据结构的实现:栈、队列及二叉树
- Python——几种数据结构的实现:栈、队列及二叉树
- python几种数据结构的实现:栈、队列及二叉树
- python的几种数据结构
- python的几种数据结构
- java常用的几种数据结构,堆栈,队列,数组,链表,哈希表
- 管理资源的几种数据结构
- 基本的几种数据结构
- python 的几种数据类型
- Python中几种数据结构的整理,列表、字典、元组、集合
- Python中几种数据结构的整理,列表、字典、元组、集合
- Python中几种数据结构的整理,列表、字典、元组、集合
- 三种数据队列的实现
- python的三种数据结构
- c++几种数据结构
- 数论flag
- 蓝牙4.0 概述
- 廖雪峰Python教程1轮还没学明白的(3) -- 面向对象高级编程 -- 定制类 -- __getattr__之链式调用
- 巧用while(true){ }死循环的一个小例子
- Java StringBuffer
- Python笔记——几种数据结构的实现:栈、队列及二叉树
- 51Nod 1100 斜率最大
- 黑化的牛牛-Java-牛客模拟四
- 随遇而安也是一种选择
- 解决 IntelliJ IDEA 无法热加载 Spring Boot 模板文件和静态资源文件
- hive:explode() 与 lateral view
- [实训]SSH中使用filter过滤器
- Python笔记——排序算法的实现
- LeetCode445——Add Two Numbers II(两个链表数据相加(从链表尾部开始),返回新链表)