指针BiTree函数BiTreei
sert_BSTcharstrBiTreerootpare
tpchar1变量定义及初始化rootBiTreemallocsizeofstructBSTNodeifroots0retur
NULLroot>Lchroot>RchNULLfoot>Cou
t1root>Elems
ffors0spare
tNULL2whilepp从树跟结点出发查找当前字符s所在结点pare
tpifsp>Elem若树中已存在当前字符结点,则当前字符的计数值加1p>Cou
tbreakelse否则根据字符s与结点p中字符的关系,进入p的左子树或右子树ifs>p>Elempp>Rchelsepp>Lchwhileif3若树中不存在字符值为s的结点,则申请结点并插入树中pBiTreemallocsizeofstructBSTNodeifpretur
NULLp>Lchp>RchNULLp>Cou
t1p>Elems根据当前字符与其父结点字符值的大小关系,将新结点作为左子树或右子树插入ifp>Elem>pare
t>Elem4pelse5pforretur
root;试题五分析本题考查二叉排序树在链表存储结构上的运算。函数i
sert_BSTcharstr的功能是对给定的字符序列str按照ASCⅡ码值大小关系创建二叉排序树,并返回指向树根结点的指针,序列中重复出现的字符只建一个结点,并由结点中的Cou
t域对字符的重复次数进行计数。根据程序代码中对字符序列中字符的引用情况,可知需要在空1处定义字符指针s,其初值应为参数str的值。for语句的作用是对序列中的每个字符s,用while循环从树根结点出发查找s所在结点。由于while的条件p为非空指针时循环,因此此前应设置p的初值,显然空2是为p没初值root,从而对每个字符s都可以从树根出发,开始查找结点。若树中已存在当前字符s的结点,则s字符的计数值加1,并结束对该字符的查找过程,若树中不存在s的结点,则会进入树的一个空子树以p为空表示,因此空3处应填入“pNULL”或“中p”。插入新的结点时,需要建立其与父结点的关系,在查找结点的过程中pare
t表示待插入结点的父结点。因此根据二叉排序树的定义,待插入元素的值大于其父结点的值,则作为右子结点插入,否则作为左子结点插入。所以,空4、5分别填入pare
t>Rch和pare
t>Lch。参考答案1sstr2proot3pNULL4pare
t>Rch5pare
t>Lch试题六阅读以下说明和C代码。说明类Stock的定义中有三处错误,分别在代码的第04、06、10行。请补齐下述代码中的空缺1,修改错误并给出修改后该行的完整代码,最后完善程序运行后的输出结果。C代码01i
clude<iostream>02usi
g
amespacestd
f03classStock04protected05Stockshares0share_val00;Outputr