编写判定给定的二叉树是否是二叉排序树的函数。

admin2012-06-21  72

问题 编写判定给定的二叉树是否是二叉排序树的函数。

选项

答案判定二叉树是否为二叉排序树是建立在二叉树中序遍历的基础上,在遍历中附设一指针pre指向树中当前访问结点的中序直接前驱,每访问一个结点就比较前驱结点pre与该结点是否有序。若遍历结束后各结点和其中序直接前驱结点均满足有序,则此二叉树即为二叉排序树,否则不是二叉排序树。 void BisortTree(Bitree*T,Bitree*pre,int&flag) /*初始时pre=NULL,flag=1,若结束时flag=1,则此二叉树为排序二叉树*/ { if(T!=NULL&&flag=-1) { BisortTree(T->lchild,pre,flag);//遍历左子树 if(pre==NULL)//访问中序序列的第一个结点时,不需要比较 { flag=1; pre=T; } else//比较T与中序直接前驱pre的大小 { if(pre->data<T->data)//pre与T有序 { flag=1; pre=T; } else//pre与T无序 flag=0; } BitsortTree(T->rchild,pre,flag);//遍历右子树 } }

解析
转载请注明原文地址:https://kaotiyun.com/show/hNxi777K
0

最新回复(0)