1. 程式人生 > >判斷一棵樹是否是二叉排序樹演算法的巧妙之處

判斷一棵樹是否是二叉排序樹演算法的巧妙之處

運用全域性變數pre和中序遍歷的思想,儲存上一個結點的指標,然後將當前結點和上一個結點進行比較,從而作出判斷。

typedef struct {
  KeyType key;  
  ... ...   // 其他資料域
} TElemType;
typedef struct BiTNode {
  TElemType data;
  struct BSTNode  *lchild, *rchild;
}BSTNode, *BSTree;

BSTree pre;//全域性變數
/*判斷是否是二叉查詢樹*/
Status isBSTree(BSTree T){
    if(T){//中序遍歷 
        if
(!isBSTree(T->lchild)) return FALSE; if(pre->data.key > T->data.key) return FALSE; pre = T;//儲存前驅結點 if(!isBSTree(T->rchild)) return FALSE; return TRUE; } else return TRUE; }