Python 构造二叉搜索树
来源:互联网 发布:抓取网页数据工具 编辑:程序博客网 时间:2024/05/18 04:37
本文采用Python语言编写数据结构之二叉搜索树,主要实现二叉树的构造,插入数据,删除数据,以及二叉树的中序遍历,先序遍历,和后序遍历。
具体代码如下:
#构造二叉树结构,及属性class Tree(object): def __init__(self): self.root=Noneclass Node(object): def __init__(self,x): self.key=x self.left=None self.right=None self.parent=None#插入二叉树数据def TreeInsert( T, z): y =None x = T.root while x != None: y = x if z.key < x.key: x = x.left else: x = x.right z.parent = y if y == None: T.root = z elif z.key < y.key: y.left = z else: y.right = z z.left = None z.right = None return z.key#删除节点def Transplant(T,u,v): if u.parent==None: T.root=v elif u==u.parent.left: u.parent.left=v else: u.parent.right=v if v!=None: v.parent=u.parentdef TreeMin(x): while x.left !=None: x=x.left return xdef TreeDelete(T,z): if z.left==None: Transplant(T,z,z.right) elif z.right==None: Transplant(T,z,z.left) else: y=TreeMin(z.right) if y.parent!=z: Transplant(T,y,y.right) y.right=z.right y.right.parent=y Transplant(T,z,y) y.left=z.left y.left.parent=y return z.key#中序遍历def Midsort(root): if root!= None: Midsort(root.left) if root.key!=0: print(root.key) Midsort(root.right)#先序遍历def Behsort(root): if root!= None: Behsort(root.left) Behsort(root.right) if root.key != 0: print(root.key)#后序遍历def Presort(root): if root!= None: if root.key != 0: print(root.key) Presort(root.left) Presort(root.right)#构造二叉树实例对象node=[5,9,6,8,7,2,1,10]T=Tree()#插入二叉树数据for nodes in node: print('插入数据',TreeInsert(T,Node(nodes)))#删去一个节点print('删去节点',TreeDelete(T,T.root))#中序遍历print('中序遍历')Midsort(T.root)#后序遍历print('后序遍历')Behsort(T.root)#先序遍历print('先序遍历')Presort(T.root)
运行结果如下:
阅读全文
1 0
- Python 构造二叉搜索树
- 构造二叉搜索树C++
- 二叉搜索树的一种构造方法
- hdu3791(二叉搜索树构造)
- 二叉搜索树 python实现
- 使用python实现二叉搜索树
- 搜索二叉树的python实现
- 平衡搜索二叉树的python实现
- [硕.Love Python] BinarySearchTree(二叉搜索树)
- python 数据结构之二叉搜索树
- HDOJ-3791(二叉搜索树的构造)
- 【Python排序搜索基本算法】之二叉树的遍历
- 二叉搜索树的基本概念、性质及Python实现
- 算法导论程序28--查询二叉搜索树(Python)
- 算法导论程序39--最优二叉搜索树(Python)
- python图形化显示非搜索二叉树
- Python:二叉搜索树的第k个节点
- 【算法——Python实现】二叉搜索树
- 数据库视频(一)
- python中的map函数
- HTTP 500 Internal Server Error
- npm update
- CentOS 环境搭建并测试Node.js服务器开发环境
- Python 构造二叉搜索树
- 林纳斯·托瓦兹(Linus Torvalds)为什么被称作大神?
- codeforces 706A Beru-taxi
- 关于预答辩研究生汇报内容及方式的几点要求
- <剑指offer>javascript解法(1-65)
- PAT (Basic Level) Practise (中文) 1046. 划拳(15)
- Lua_ Lua结合BundleManager实现网络热更新_023
- C语言里的符号重载《C专家编程》
- 框架常见面试题