已知二叉树的结构typedef struct node{char data; struct node * lchild,*rchild;}tnode;/*lchild代表指向左子数指针,rchild代表指向右子树指针*/请问谁会写一个函数判别该二叉树是否为排序树.我想要一个详细源程序,谢谢

热心网友

只要对待判定的二叉树中的结点按层遍历并判断即可。在该算法中要用到队列保存已遍历的结点指针。 typedef BinTNode *DataType;//循环队列中元素为二叉树结点指针  int BinSortStree(BinTree T)  {    CirQueue Q;   BinTNode *p;   if (!T) return 1;//空树为二叉排序树   InitQueue(&Q);   EnQueue(&Q,T);   while(!QueueEmpty(&Q))    {     p=DeQueue(&Q);     if (p-lchild)      if (p-datalchild-data) return -1;//不是二叉排序树      else EnQueue(&Q,p-lchild);     if (p-rchild)      if (p-datap-rchild-data) return -1;//不是二叉排序树      else EnQueue(&Q,p-rchild);    }   return 1;//是二叉排序树 。

热心网友

按上面的方法就成,跌代判断每一个接点是否满足(lchid-data data data)或者相反顺序。