二叉查詢樹在查詢中有著重要的應用,乙個二叉樹變成乙個二叉查詢樹後所具有的性質是:對於樹中的所有結點,它的左子樹中的所有關鍵字的值小於該結點的關鍵字值,它的右子樹中所有關鍵字的值大於該結點關鍵字的值。這就是二叉查詢樹。自己腦補一下什麼是二叉查詢樹,什麼是普通二叉樹。由於樹的遞迴定義,通常是遞迴地編寫這些操作的例程。
下面是二叉查詢樹的操作例程,注:由於這裡的所有操作函式都使用了遞迴,所以我把這些**的詳細總結放在了我的一篇專門用來總結遞迴的文章裡-------------遞迴演算法設計總結
標頭檔案
#ifndef tree_h_included
#define tree_h_included
typedef
struct tree_nodesearch_tree;
void
make_empty
(search_tree *t)
;search_tree *
find
(search_tree *t,
int x)
;search_tree *
find_min
(search_tree *t)
;search_tree *
find_max
(search_tree *t)
;search_tree *
insert_node
(search_tree *t,
int x)
;search_tree *
delete_node
(search_tree *t,
int x)
;#endif
// tree_h_included
c檔案
#include
#include
#include
"tree.h"
intmain()
void
make_empty
(search_tree *t)
}search_tree *
find
(search_tree *t,
int x)
}search_tree *
find_min
(search_tree *t)
search_tree *
find_max
(search_tree *t)
search_tree *
insert_node
(search_tree *t,
int x)
else
if(t->data > x)
else
if(t->data < x)
return t;
}search_tree *
delete_node
(search_tree *t,
int x)
else
if(x < t->data)
else
if(x > t->data)
else
if(t->left && t->right)
else
return t;
}
二叉樹 二叉查詢樹
構建二叉樹,判斷是否為二叉查詢樹,遞迴先序遍歷,非遞迴中序遍歷 include include include include using namespace std 二叉樹結點 struct treenode 鍊錶結點 struct listnode struct tempnodetempnode...
二叉樹 二叉查詢樹
二叉樹 binary tree 一種樹型結構,每個節點最多擁有兩個節點。如下圖 幾種型別的二叉樹 1.full binary tree 每個節點的孩子數 是 0 或者 2.對高度沒有要求。如下圖 2.perfect binary tree 這個就是最完美的樹,顧名思義,所有葉子節點都有相同的深度,並...
樹(樹,二叉樹,二叉查詢樹)
1.定義 n n 0 個結點構成的有限集合。當n 0時,稱為空樹 2.對於任一棵非空樹 n 0 它具備以下性質 1 樹中有乙個稱為 根 root 的特殊結點,用 r 表示 2 其餘結點可分為m m 0 個互不相交的有限集t1,t2,其中每個集合本身又是一棵樹,稱為原來樹的子樹。3.樹的一些性質 1 ...