已知二叉樹的結構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)或者相反順序。