数据结构——左高树
一、扩充二叉树
考察一棵二叉树,它有一类特殊的节点叫做外部节点( external node),用来代替树中的空子树,其余节点叫做内部节点( internal node)。增加了外部节点的二叉树被称为扩充二叉树(extended binary tree),图9-6a 给出了一棵二叉树,其相应的扩充二叉树如图9-6b 所示,外部节点用阴影框表示,为了方便起见,这些节点用a~f标注。
令s (x) 为从节点x 到它的子树的外部节点的所有路径中最短的一条,根据s(x)的定义可知,若x 是外部节点,则s的值为0,若x 为内部节点,则它的s 值是:m i n {s (L ), s (R) } + 1其中L与R分别为x 的左右孩子。扩充二叉树(如图9 - 6 b所示)各节点的s 值如图9-6c 所示。
定理9-1 令x 为一个H B LT的内部节点,则
1) 以x 为根的子树的节点数目至少为2^s (x)-1。
2) 若子树x 有m 个节点,s (x) 最多为log2 (m+ 1 )。
3) 通过最右路径(即,此路径是从x 开始沿右孩子移动)从x 到达外部节点的路径长度为s (x)。
定义:
[最大HBLT] 即同时又是最大树的HBLT;
[最小HBLT ] 即同时又是最小树的HBLT。
定义x的重量w(x) 为以x 为根的子树的内部节点数目。注意到若x 是外部节点,则其重量为0;若x为内部节点,其重量为其孩子节点的重量之和加1,图9-6a 中二叉树各节点的重量如图9-6 d所示。
定义[重量优先左高树] 当且仅当一棵二叉树的任何一个内部节点,其左孩子的w 值大于等于右孩子的w 值时,该二叉树为重量优先左高树(weight-biased leftist tree, WBLT);[最大(小)W B LT ] 即同时又是最大(小)树的W B LT。
数据结构——左高树的更多相关文章
- 数据结构(左偏树,可并堆):BNUOJ 3943 Safe Travel
Safe Travel Time Limit: 3000ms Memory Limit: 65536KB 64-bit integer IO format: %lld Java class ...
- Go 数据结构--二分查找树
Go 数据结构--二分查找树 今天开始一个Go实现常见数据结构的系列吧.有时间会更新其他数据结构. 一些概念 二叉树:二叉树是每个节点最多有两个子树的树结构. 完全二叉树:若设二叉树的高度为h,除第 ...
- 【经典数据结构】B树与B+树
本文转载自:http://www.cnblogs.com/yangecnu/p/Introduce-B-Tree-and-B-Plus-Tree.html 维基百科对B树的定义为“在计算机科学中,B树 ...
- Linux 内核中的数据结构:基数树(radix tree)
转自:https://www.cnblogs.com/wuchanming/p/3824990.html 基数(radix)树 Linux基数树(radix tree)是将指针与long整数键值相 ...
- 数据结构---平衡查找树之B树和B+树(转)
本文转载自:http://www.cnblogs.com/yangecnu/p/Introduce-B-Tree-and-B-Plus-Tree.html 前面讲解了平衡查找树中的2-3树以及其实现红 ...
- 【经典数据结构】B树与B+树(转)
本文转载自:http://www.cnblogs.com/yangecnu/p/Introduce-B-Tree-and-B-Plus-Tree.html 维基百科对B树的定义为“在计算机科学中,B树 ...
- 【经典数据结构】B树与B+树的解释
本文转载自:http://www.cnblogs.com/yangecnu/p/Introduce-B-Tree-and-B-Plus-Tree.html 前面讲解了平衡查找树中的2-3树以及其实现红 ...
- D&F学数据结构系列——B树(B-树和B+树)介绍
B树 定义:一棵B树T是具有如下性质的有根树: 1)每个节点X有以下域: a)n[x],当前存储在X节点中的关键字数, b)n[x]个关键字本身,以非降序存放,因此key1[x]<=key2[x ...
- 大话数据结构—平衡二叉树(AVL树)
平衡二叉树(Self-Balancing Binary Search Tree/Height-Balanced Binary Search Tree),是一种二叉排序树,当中每个节点的左子树和右子树的 ...
随机推荐
- asp.net 参数形式写sql
OracleConnection conn = c.GetConnection(); OracleCommand cmd = new OracleCommand(); ...
- linux make
linux make file 以下是转载 感谢原作者 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和 ...
- gitolite随记
1.git clone源码 git clone git://github.com/sitaramc/gitolite 2.安装 gitolite/install -ln 3.建立git仓库 gitol ...
- Servlet编码和解码
1.request.setCharacterencoding("XXX"); 前提是POST提交 在客户端编码对value的值进行编码之前,通知客户端用什么码表(XXX)编码 2. ...
- mysql 日期时间运算函数(转)
DAYOFWEEK(date) 返回日期date是星期几(1=星期天,2=星期一,……7=星期六,ODBC标准)mysql> select DAYOFWEEK('1998-02-03'); ...
- 双人贪吃蛇小游戏C++原创
大家好,我是小鸭酱,博客地址为:http://www.cnblogs.com/xiaoyajiang /*贪吃蛇*/ #include<stdio.h> #include<time. ...
- 使用Eclipse开发Maven插件-1/3
概要 1. 这是一个样例,基本照着<Maven实战>-徐晓斌,第17章照抄的:个人练手之作,不喜勿喷! 2. 代码行统计插件. 备注 大量插件可从以下网站获得: 1. http ...
- Android中focusable属性的妙用——底层按钮的实现
http://www.cnblogs.com/kofi1122/archive/2011/03/22/1991828.html http://www.juziku.com/weizhishi/3077 ...
- 关于box-sizing
http://www.zhangxinxu.com/css3/css3-box-sizing.php box-sizing:border-box; -o-box-sizing:border-box; ...
- 时间类处理<1>
2016/05/31 14:47:21 [emerg] 14629#0: location "/nginx_status" is outside location "/p ...