題設要求
(1)函式介面說明:
bool isbst ( bintree t )
;
其中bintree結構定義如下:
typedef
struct tnode *position;
typedef position bintree;
struct tnode
;
函式isbst須判斷給定的t是否二叉搜尋樹,即滿足如下定義的二叉樹:
定義:乙個二叉搜尋樹是一棵二叉樹,它可以為空。如果不為空,它將滿足以下性質:
非空左子樹的所有鍵值小於其根結點的鍵值。
非空右子樹的所有鍵值大於其根結點的鍵值。
左、右子樹都是二叉搜尋樹。
如果t是二叉搜尋樹,則函式返回true,否則返回false。
#include
#include
#define noinfo 0
typedef
enum
bool;
typedef
int elementtype;
typedef
struct tnode *position;
typedef position bintree;
struct tnode
;bintree buildtree()
;/* 由裁判實現,細節不表 */
bool isbst ( bintree t )
;int
main
(int argc,
char
* ar**)
/* 你的**將被嵌在這裡 */
輸入樣例1:如下圖
輸出樣例1:
yes輸入樣例2:如下圖
輸出樣例2:
no
bool isbst ( bintree t )
p=t->right;
if(p)
return true;
}
bintree createbintree()
else
return
null
;//為0,則返回空樹
while(!
isempty
(q))
scanf
("%d"
,&data)
;//輸入t的右子樹資料if(
!data) t->right =
null
;//為0,則t的右子樹為空
else
}return bt;
//迴圈結束,則返回根結點位址
}
該方法建立需要寫相關佇列函式,如下:
struct qnode
;typedef
struct qnode * qnode;
struct queue
;typedef
struct queue *linkqueue;
linkqueue createqueue()
void
addq
(linkqueue q,bintree tree)
else
} bintree deleteq
(linkqueue q)
else
return tree;
}int
isempty
(linkqueue q)
是否二叉搜尋樹——永夜莫明
二叉樹的層序建立&&層序遍歷(c語言)——super__bb
判斷二叉樹是否為二叉搜尋樹
剛開始我想的很簡單,覺得只要遞迴判斷左孩子是否小於根節點 右孩子是否大於根節點就行了 二叉搜尋樹 左孩子 根結點 右孩子 根節點 下面的寫法 錯的!錯的!二叉樹的判斷應該是左子樹的最大值 小於 根節點 右子樹的最小值大於根節點 bool isvalidbst treenode root if roo...
判斷給定的二叉樹是否為完全二叉樹
完全二叉樹 complete binary tree 深度為k,有n個結點的二叉樹當且僅當其每乙個結點都與深度為k的滿二叉樹中編號從1到n的結點一一對應時,稱為完全二叉樹。用了兩個輔助方法,遞迴實現,c codes as below class treenode public treenode ri...
判斷二叉樹是否平衡 是否完全二叉樹 是否二叉排序樹
1.判斷二叉樹是否平衡 求樹的高度 int treedepth node t return0 判斷二叉樹是否平衡 int isbalanced node t 2.判斷二叉樹是否相同 判斷兩棵二叉樹是否相同 int comptree node tree1,node tree2 拷貝二叉樹 void c...