資料結構 查詢之二叉排序樹

2021-07-05 23:22:37 字數 1307 閱讀 7975

二叉排序樹的基本操作:

包含初始化,插入,刪除,查詢,中序遍歷。。

**如下:

//二叉排序樹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 可以解決上述的問題 對於乙個二叉樹中的任意乙個非葉子節點,要求左子節點比當前節點小,右子節點比當前節點...