算法导论程序27-什么是二叉搜索树
来源:互联网 发布:哈登数据库 编辑:程序博客网 时间:2024/05/22 18:19
一棵二叉搜索树是以一棵二叉树来组织的。这样一棵树可以使用链表数据结构来表示,其中,每个结点就是一个对象,除了key和卫星数据之外,每个结点还包含属性left、right和p,它们分别指向结点的左孩子、右孩子和双亲。如果某个孩子结点和父结点不存在,则相应属性的值为NIL。根结点是树中唯一父指针为NIL的结点。
设x是二叉搜索树中的一个结点,如果y是x左子树中的一个结点,那么y.key<=x.key。如果y是x右子树中的一个结点,那么y.key>=x.key。
中序遍历(inorder tree walk):子树根的关键字位于其左子树关键字值和右子树的关键字值之间。
先序遍历(preorder tree walk):输出的根关键字在其左右子树的关键字值之前。
后序遍历(postorder tree walk):输出的根关键字在其左右子树的关键字值之后。
class Node: def __init__(self,key,right,left,p): self.key=key self.right=right self.left=left self.p=pclass tree: def __init__(self,root): self.root=root def tree_insert(self,z): y=None x=self.root while x!=None: y=x if z.key<x.key: x=x.left else: x=x.right z.p=y if y==None: self.root=z elif z.key<y.key: y.left=z else: y.right=z def inorder_tree_walk(self,x): if x!=None: self.inorder_tree_walk(x.left) print(x.key) self.inorder_tree_walk(x.right)运行结果:
>>> r=Node(12,None,None,None)>>> t=tree(None)>>> t.tree_insert(r)>>> r=Node(5,None,None,None)>>> t.tree_insert(r)>>> t.inorder_tree_walk(t.root)512>>> r=Node(18,None,None,None)>>> t.tree_insert(r)>>> r=Node(2,None,None,None)>>> t.tree_insert(r)>>> r=Node(9,None,None,None)>>> t.tree_insert(r)>>> r=Node(15,None,None,None)>>> t.tree_insert(r)>>> r=Node(19,None,None,None)>>> t.tree_insert(r)>>> r=Node(17,None,None,None)>>> t.tree_insert(r)>>> r=Node(13,None,None,None)>>> t.tree_insert(r)>>> t.inorder_tree_walk(t.root)259121315171819
阅读全文
0 0
- 算法导论程序27-什么是二叉搜索树
- 算法导论12.1什么是二叉搜索树 练习总结
- 算法导论-----二叉搜索树
- 算法导论-----------二叉搜索树
- 算法导论 二叉搜索树
- 算法导论--二叉搜索树
- 【算法导论】二叉搜索树
- 算法导论二叉搜索树
- 算法导论 二叉搜索树
- 算法导论二叉搜索树
- 算法导论 二叉搜索树
- 算法导论程序28--查询二叉搜索树(Python)
- 算法导论程序39--最优二叉搜索树(Python)
- 算法导论(Introduction to Algorithms )— 第十二章 二叉搜索树— 12.1 什么是二叉搜索树
- [算法导论]第十二章《二叉搜索树》
- 【算法导论】最优二叉搜索树
- 二叉搜索树(算法导论)
- 算法导论-----------------最优二叉搜索树
- 关于避免软键盘遮挡EditText显示的问题
- unix V6 编译
- 【模板】树状数组 区间修改,区间求和 (模板题:洛谷P3372线段树1)
- 在Myeclipse中配置Maven
- 我对Reactor,Proactor模式的一点理解
- 算法导论程序27-什么是二叉搜索树
- 转发请求实现HttpURLConnection
- InitCommonControlsex详解
- Git常用命令与常识
- 浏览器是如何使你的http网址变成https的
- Java 实例-产生随机数
- 利用 Nginx 进行反向代理和负载均衡
- Mysql优化
- session失效后跳转到登陆页面