打算就说说标题的方法,和介绍一下查找成功和非成功二叉树中结点的方法
关键字序列1,2,3,4,5构造而得的二叉排序树
ASL=(1,2,3,4,5)/5=3
按关键字3,1,2,5,4构造而得的二叉排序树
ASL=(1+2+2+3+3)/5=2.2
很明显第二种序列的ASL要快。至于二叉排序树怎么构成的其实就是根据它的性质(若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值,若它的右子树不空,则右子树上的所有结点的值均大于它的根结点的值)
ASL怎么求
分别分为成功和非成功的情况
成功
每个结点的深度相加除以结点个数
非成功
我拿个书上的例子把
首先,先补全二叉树,可以看到有12个非成功的结点,这里我假设每个非成功查找结点概率相同,然后深度为3的非成功结点有4个,深度为4的非成功结点有8个。所以是3*4+4*8
所以该图非成功的ASL=(3*4+4*8)/12