二叉查找树
来源:互联网 发布:淘宝网天猫女装夏装 编辑:程序博客网 时间:2024/05/18 03:44
1.
(1)左孩子<节点<右孩子
(2)插入 删除 查找 最大值 最小值 前驱 后继 等基本操作的复杂度都是与树高成正比O(logn) 或者O(logh),但如果数是线性链那么这些操作的时间为O(n)
(3)可通过中序遍历得到一个有序的序列
(4)找树中最小关键字,由根开始一路向左查找,知道最后一个元素;最大元素=由根开始一路向右查找直到最末端
2.前驱和后继
给定一个二叉查找树,给定中序遍历下节点x的后继和前驱节点,如果所有的关键字不相同:
后继:(1)有右子树的情况下:节点 x 的后继=大于key[x] 中关键字最小的那个,即x右子树最左边的那个元素
(2)没有右子树情况下:x的后继=x的最低祖先节点y ,且y的左儿子也是x的祖先;可以从x向上找,知道遇到某个是其父节点的左儿子的节点时为止
(当y=parent[x] !=null && x=right[y] 循环向上找,x=y; y= parent[x] , 跳出循环后y就是x的后继节点)
比如图中13的后继节点是15,15的后继节点是17
3.插入 z
public void insert(BTree root,int data){//插入if(data>root.data){//向右走if(root.right==null){root.right=new BTree(data);}else{this.insert(root.right, data);}}else{//向左走if(root.left==null){root.left=new BTree(data);}else{this.insert(root.left, data);}}}
4.删除z
删除的话有3种情况:
(1)z节点无子树,那么parent[z]=null即可
(2)z有一个孩子,那么将其孩子链接在父亲上即可
(3)z有两个孩子,先删除z的后继节点y,后继节点y替代节点z的位置
0 0
- 查找--二叉查找树
- 二叉树、二叉查找树
- 二叉树 & 二叉查找树
- 【查找结构】二叉查找树
- 查找之二叉树查找
- 查找之二叉树查找
- 查找:二叉查找树总结
- 二叉树查找树...
- 二叉树查找树
- 查找--遍历二叉树
- 二叉查找树
- 二叉查找树实现
- 二叉查找树
- 动态二叉查找树
- 最优二叉查找树
- 二叉查找树
- 二叉查找树
- 平衡二叉查找树
- 从IaaS到AI,马云为何让阿里云去扛人工智能大旗?
- linux中重置服务器的mysql用户密码 及 导入sql文件
- 用zookeeper实现简单的检测离线或者上线的功能
- 关于程序员求职简历
- mysql数据类型
- 二叉查找树
- 更改UIImagePickerController导航栏背景颜色和字体颜色
- c++学习笔记 -- 内联函数
- WPF之积累
- Struts2中的Action类与ActionSupport类
- 13. Roman to Integer
- 关于Matlab中用fdatool设计滤波器
- 导出SQL运行结果的方法总结
- 二叉树的遍历(Java)