b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

二叉排序树的建立_怎么建立二叉排序树_二叉排序树的创建(24)

电脑杂谈  发布时间:2017-01-11 12:04:54  来源:网络整理

索引顺序表

分块,块间有序 + 块内无序,对应索引表有序 + 顺序表(无序)。

索引顺序表的查找性能介于顺序查找与折半查找之间。

分块的最佳长度是多少?规定条件:每块的大小相同,对块索引表和块内查找均采用顺序查找。

设表长为n,等分成b块,采用顺序查找确定块需要比较(b+1)/2次,块内顺序查找比较(n/b+1)/2次,总共C(b)=(b+1)/2+(n/b+1)/2,要使C(b)最小,有b?。

二叉排序树

二叉排序树

二叉排序树或为空树;或者是这样一棵二叉树,若左子树不空,则左子树上所有结点均小于根结点,若右子树不空,则右子树上所有结点均大于根结点,其左、右子树也是二叉排序树。 技巧:如果中序遍历二叉排序树,得到的结果将从小到大有序。手工判别二叉排序树的方法之一。

例:判断对错:二叉排序树或是空树,或是这样一棵二叉树,若左子树不空,则左孩子小于根结点,若右子树不空,则右孩子大于根结点,左、右子树也是这样的二叉排序树。(×)请自己举反例。

查找

思路:①若二叉树为空,则找不到,②先与根比较,相等则找到,否则若小于根则在左子树上继续查找,否则在右子树上继续查找。

递归算法:

BstTree BstSearch ( BstTree bst, DataType x )

{

if ( bst==NULL )

return NULL;

else if ( bst->data==x )

return bt;

else if ( x<bst->data )

return BstSearch ( bst->lchild, x);

else

return BstSearch ( bst->rchild, x);

}

非递归算法:

BstTree BstSearch ( BstTree bst, DataType x )

{

p = bst;

while ( p ) {

if ( p->data==x )

return p;

else if ( x<p->data )

p = p->lchild;

else

p = p->rchild;

}

return NULL; // not found

}

插入

思路:先查找,若找不到则插入结点作为最后访问的叶子结点的孩子。

新插入的结点总是叶子。

建立

经过一系列插入操作可以建立二叉排序树。

给定关键字序列,建立二叉排序树。方法:①开始二叉树为空,②对每一个关键字,先进行查找,如果已存在,则不作任何处理,否则插入。

22一句话,“从空树开始,每次插入一个关键字”。

例:给定关键字序列{53,45,12,24,90,45,80},建立二叉排序树。 22 不准确的说法,只为便于理解和记忆,不要在正式场合引用。

删除

叶子

直接删除即可。

删除左子树或右子树为空

“移花接木”:将左子树或右子树接到双亲上。

删除左右子树都不空 “偷梁换柱”:借左子树上最大的结点替换被删除的结点,然后删除左子树最大结点。(或者借用右子树上最小结点然后删除之亦可。)

删除分析

判定树和二叉排序树相同。结点的层次等于查找时比较关键字的个数。

等概率情况下查找成功时

1n1?2?2?3?3?4ASL??h

i??2.5

i?1

若按照关键字有序的顺序插入结点建立二叉排序树,将得到一棵单支树,对其进行查找也退

化为顺序查找,平均查找长度为(1+n)/2。一般地,如果在任一关键字k之后插入二叉排序树的关键字都大于或都小于k,则该二叉排序树是单分支的,深度是n,查找效率和顺序查找相同。 平衡二叉树


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-25557-24.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 芙蓉影
      芙蓉影

      要赶上现有成熟体系的战力还需要时间

      • 向千梓
        向千梓

        别随便说同志不合法

    热点图片
    拼命载入中...