已知二又树T的结点形式为(Uink,data,count,rlink),在树中查找值为X的结点,若找到,则记数(count)加1:否则,作为一个新结点插入树中,插入后仍为二叉排序树,写出其非递归算法。
【正确答案】正确答案:typedef struct node{ datatype data; int count; struct node*llink,*rlink; }BiTNode,*BSTree: void Search_InsertX(BSTree t,datatype X){ //在二叉排序树t中查找值为x的结点,若查到,则其结点的count域值增1, //否则,将其插入到二叉排序树中 BSTree p=t; while(P!=null&&P->data!=X){ //查找值为x的结点,f指向当前结点的双亲 f=p: if(P一>data<X)P=p一>rlink; else P=p一>llink; } if(!P){ //无值为x的结点,插入之 P=(BiTNode*)malloc(sizeof(BiTNode)); p一>data=X;p一>llink=null;p一>rlink=null; if(f一>data>X)f一>llink=P; else f一>rlink=P: } else P->count++: //查询成功,值域为x的结点的count增1 }
【答案解析】