全文预览

线索二叉树课程设计

上传者:叶子黄了 |  格式:doc  |  页数:28 |  大小:442KB

文档介绍
插入一个结点,就必须要以固定的规则来进行插入。在本程序中对树的输出使用了中序输出的方法,所以插入的时候使用的规则就是以中序输出为顺序,先查找到一个点,再将要插入的结点作为该结点的前驱插入树中。如中序为:→d→b→e→a→f→c→g插入的结点为:w要插入的位置为:b则插入结点后的顺序为:→d→w→b→e→a→f→c→g2、查找:使用查找孩子指针函数来查找结点位置的指针。在查找的过程中要处理好线索指针和孩子指针的关系,不能将线索也当作孩子处理了。并且在循环的判断过程中,再不能使用以前的以空为结束语句,而是要用标志域来进行判断。在查找的过程中,考虑到树的递归性质,所以将查找函数也设置为递归函数。3、查找函数实现:Bithptr*SearchChild(Bithptr*point,charfindnode){Bithptr*point1,*point2;if(point!=NULL){if(point->data==findnode)returnpoint;//找到结点的信息,返回指针else if(point->ltag!=1){//判断是否有左子树point1=SearchChild(point->lchild,findnode);//递归if(point1!=NULL)returnpoint1;}if(point->rtag!=1){//判断是否有右子树point2=SearchChild(point->rchild,findnode);//递归if(point2!=NULL)returnpoint2;}returnNULL; }elsereturnNULL;}4、插入方法:在一棵树中插入一个结点,因为插入的位置不同,就对应着不同的插入情况。通过分析总结出各种情况:插入结点有左孩子时:插入的方法是,找到左子树的最右下结点,将待插的结点插为其结点的右孩子。插入结点没有左孩子时:

收藏

分享

举报
下载此文档