已知二叉排序树采用二叉链表存储结构,根结点的指针为T,链结点的结构为(lchild,data,rchild),其中lchild,rchild分别指向该结点左、右孩子的指针,data域存放结点的数据信息。请写出递归算法,从小到大输出二叉排序树中所有数据值>=x的结点的数据。要求先找到第一个满足条件的结点后,再依次输出其他满足条件的结点。
已知二叉排序树采用二叉链表存储结构,根结点的指针为T,链结点的结构为(lchild,data,rchild),其中lchild,rchild分别指向该结点左、右孩子的指针,data域存放结点的数据信息。请写出递归算法,从小到大输出二叉排序树中所有数据值>=x的结点的数据。要求先找到第一个满足条件的结点后,再依次输出其他满足条件的结点。
正确答案:void Print(BSTree t) // 中序输出以t为根的二叉排序树的结点 {if(t){Print(t->lchild); Coutdatarchild;//沿右分枝找第一个值≥x的结点 bst=p; //bst所指结点是值≥x的结点的树的根 if(p) {f=p; p=p->lchild ;//找第一个值data≥x)//沿左分枝向下,找第一个值lchild ;} //f是p的双亲结点的指针,指向第一个值≥x的结点 if(p) f->lchild=null; //双亲与找到的第一个值