建立一棵二叉排序樹

2021-09-24 03:30:53 字數 889 閱讀 4600

二叉排序樹(也稱二叉查詢樹),或者是一棵空的二叉樹,或者是具有下列性質的二叉樹:

⑴ 若它的左子樹不空,則左子樹上所有結點的值均小於根結點的值;

⑵ 若它的右子樹不空,則右子樹上所有結點的值均大於根結點的值;

⑶ 它的左右子樹也都是二叉排序樹。

中序遍歷二叉排序樹可以得到乙個按關鍵碼的有序數列。

脫胎於二叉樹,區別是每個節點資料要進行比對,再進行插入,小插左,大插右,直接上**,清楚明白。

#include.h>

using namespace std;

#define n

100typedef struct bitnode

bitnode,

*bitree;

bitree root=

null

;int n,k[n]

;void

inorder

(bitree t

)//中序遍歷

}void

insert

(int m)

else

elseif(

(m>p1-

>data)

&&(p1-

>rchild!=

null))

elseif(

(m>data)

&&(p1-

>lchild==

null))

elseif(

(m>p1-

>data)

&&(p1-

>rchild==

null))

}}}void

create()

for(int i=

0; iint main()

判斷一棵二叉樹是否是二叉排序樹

判斷一棵二叉樹是否是二叉排序樹,可以通過中序遍歷來檢查,為此要設定乙個指標pr指示二叉樹中當前結點的中序直接前驅,每訪問乙個結點,就比較當前訪問結點的關鍵值是否大於ptr所指結點的關鍵字值,如果遍歷了所有結,各結點與其中序直接前驅點都 是後乙個大於前乙個,則為二叉排序樹。void binsearch...

判斷一棵樹是否為二叉排序樹

由於二叉排序樹的中序遍歷時得到的一定是個乙個公升序序列,我們可以根據這一性質,利用中序遍歷進行判定。1 設定全域性變數max為無窮小。2 若樹為空,則返回true。3 否則遞迴判斷左子樹是否為二叉排序樹,並用flag1儲存結果。3 若flag1為假或者根節點關鍵字小於等於左子樹的關鍵字,則返回fal...

建立一棵二叉樹 輸出前序

洛谷 p1305 輸入一串二叉樹,用遍歷前序打出。第一行為二叉樹的節點數n。n leq 26n 26 後面n行,每乙個字母為節點,後兩個字母分別為其左右兒子。空節點用 表示 6abc bdicj d i j 輸出 abdicj 思路 建立乙個節點包含父節點 左兒子 右兒子 的節點 有父節點可以判斷誰...