Python笔记——几种数据结构的实现:栈、队列及二叉树
2011-04-11 14:46
1161 查看
目前只实现了三种,栈、队列和二叉树,哪天得空继续补吧~
毕设忙晕了~~
1.栈
执行:
2.队列
3.二叉树
运行结果:
后续实现了会慢慢补上~~旧的也会不断改进,希望大家多多给意见~~
毕设忙晕了~~
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)
运行结果:
后续实现了会慢慢补上~~旧的也会不断改进,希望大家多多给意见~~
![](http://hi.csdn.net/attachment/201104/11/0_1302504323dR18.gif)
相关文章推荐
- Python笔记——几种数据结构的实现:栈、队列及二叉树
- Python笔记——几种数据结构的实现:栈、队列及二叉树
- Python——几种数据结构的实现:栈、队列及二叉树
- python几种数据结构的实现:栈、队列及二叉树
- python数据结构学习笔记-2016-11-05-01-队列ADT及其实现
- Python笔记——几种数据结构的实现:栈、队列及二叉树
- 基础数据结构 之 队列(python实现)
- 数据结构 — 6.顺序队列(循环)实现二叉树层次遍历
- Python实现基本数据结构中队列的操作方法示例
- 【Java数据结构学习笔记之三】Java数据结构与算法之队列(Queue)实现
- 数据结构 二叉树层序遍历的队列实现
- Python数据结构——栈、队列的实现(二)
- python——python数据结构之栈、队列的实现
- python数据结构学习笔记-2016-11-27-01-二叉树
- Python数据结构——二叉树的实现
- 数据结构学习笔记 --- 队列(循环队列-队列的顺序表示和实现)
- 【Java数据结构学习笔记之三】Java数据结构与算法之队列(Queue)实现
- Python数据结构之实现队列
- 几种基本数据结构--栈、队列、双向链表、有根树的分析和简单实现
- python 用栈和队列实现二叉树的深度优先遍历(三种)和广度优先遍历