二叉排序樹的基本操作:
包含初始化,插入,刪除,查詢,中序遍歷。。
**如下:
//二叉排序樹binary_sort_tree
//臨時變數一般為值,指標一般不適合臨時比變數
#include using namespace std;
#define get_array_len(array)
struct my_tree
;my_tree* serch_position_in_tree(my_tree *test_tree,int key,my_tree * last_tree,char &flag)//查詢
else if (test_tree->data==key)
if (test_tree->dataright_child,key,test_tree,flag);
} else }
my_tree* insert_leaf_to_tree(my_tree *test_tree,int key)//插入
return test_tree;
}void delete_my_tree(my_tree *my_test_tree)
else if (my_test_tree->right_child==null)
else//前驅
my_test_tree->data=temp_tree2->data;
if (temp_tree1!=my_test_tree)
temp_tree1->right_child=temp_tree2->left_child;
else temp_tree1->right_child=temp_tree2->right_child;
delete(temp_tree2); }}
bool delete_leaf_from_tree(my_tree *test_tree,int key)//刪除
else
return false;
}my_tree* init_binary_sort_tree(int a,int n)//初始化
int main()
; int n=get_array_len(a);
my_tree *test_tree=init_binary_sort_tree(a,n);//按照中序遍歷排進去的
delete_leaf_from_tree(test_tree,47);
middle_serch(test_tree);
return 0;
}
平均的時間複雜度為o(nlogn);初學資料結構,不足之處還請大神指點。。。 資料結構之二叉排序樹
二叉排序樹或者是一棵空樹,或者是具有下列性質的二叉樹 1 若左子樹不空,則左子樹上所有節點的值均小於它的根節點的值 2 若右子樹不空,則右子樹上所有節點的值均大於它的根節點的值 3 左 右子樹也分別為二叉排序樹 4 沒有鍵值相等的節點。以下只建立並先序列印出二叉排序樹 include include...
資料結構之二叉排序樹
二叉排序樹 bst binary sort search tree 對於二叉排序樹的任何乙個非葉子節點,要求左子節點的值比當前節點的值小,右子節點的值比當前節點的值大。特別說明 如果有相同的值,可以將該節點放在左子節點或右子節點 比如針對前面的資料 7,3,10,12,5,1,9 對應的二叉排序樹為...
資料結構之二叉排序樹
別名 二叉搜素樹,二叉查詢樹 線性結構的缺點 順序儲存 不排序 查詢困難,只能通過線性查詢乙個乙個找 排序 刪除和插入操作困難 鏈式結構 無論排序還是不排序,查詢都十分麻煩 注 二叉排序樹 bst 可以解決上述的問題 對於乙個二叉樹中的任意乙個非葉子節點,要求左子節點比當前節點小,右子節點比當前節點...