?? 9.31.c
字號:
9.31④ 試寫一個判別給定二叉樹是否為二叉排序樹
的算法,設此二叉樹以二叉鏈表作存儲結構。且樹中
結點的關鍵字均不同。
實現下列函數:
Status IsBSTree(BiTree t);
/* 判別給定二叉樹t是否為二叉排序樹。*/
/* 若是,則返回TRUE,否則FALSE */
二叉樹的類型BiTree定義如下:
typedef struct {
KeyType key;
... ... // 其他數據域
} ElemType;
typedef struct BiTNode {
ElemType data;
BiTNode *lchild,*rchild;
}BiTNode, *BiTree;
void BSTree(BiTree t,int &last,int &flag);
Status IsBSTree(BiTree t)
/* 判別給定二叉樹t是否為二叉排序樹。*/
/* 若是,則返回TRUE,否則FALSE */
{
int last=0;
int flag=1;
BSTree(t,last,flag);
return flag ;
}
void BSTree(BiTree t,int &last,int &flag)
{
if(t->lchild&&flag) BSTree(t->lchild,last,flag);
if(t->data.key<last) flag=0; //與其中序前驅相比較
last=t->data.key;
if(t->rchild&&flag) BSTree(t->rchild,last,flag);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -