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