二叉樹成為二叉查詢樹的性質是,對於樹種的每個節點x,他的左子樹中的所有關鍵字的值均小於x的關鍵字的值,而他的右子樹中的所有關鍵字的值均大於x的關鍵字的值。這意味著,該樹的所有元素均可以是用某種統一的方式排序。
tree.h
#pragma once
//we define the binary tree.
struct treenode;
typedef struct treenode * tree;
struct treenode
;tree treecreat(int val);
tree treeinsert(tree tr, int val);
tree treedelete(tree tr, int val);
tree treefind(tree tr, int val);
tree treefindmax(tree tr);
tree treefindmin(tree tr);
tree.c
#include "stdafx.h"
#include "tree.h"
#include
#include
using namespace std;
tree treecreat(int val)
tree treeinsert(tree tr, int val)
else
if (val < tr->elem)
tr->left = treeinsert(tr->left, val);
else
if (val > tr->elem)
tr->right = treeinsert(tr->right, val);
return
tr;}
tree treedelete(tree tr, int val) //二叉樹種非常關鍵的乙個函式,
else
if (val < tr->elem)
else
if (val > tr->elem)
if (tr->left && tr->right) //如果tr又兩個孩子,
else
return
tr;}
tree treefind(tree tr, int val)
tree treefindmax(tree tr)
return
tr;}
tree treefindmin(tree tr)
return
tr;}
資料結構之二叉查詢樹
針對二叉查詢樹的操作 增刪改查 的時間和樹的高度成正比,比如都有10個節點的乙個樹,樹高為4和樹高為10的操作時間肯定是不同的,這個時間實際上是o lgn 二叉查詢樹的期望的樹高是lgn,從而基本動態集合的操作平均時間為 lgn 通常二叉查詢樹基於鍊錶實現,每個節點儲存左,右子節點,如果想更方便的實...
資料結構之二叉查詢樹
二叉查詢樹 binary search tree 又被稱為二叉搜尋樹。設x為二叉查詢樹中的乙個結點,x節點包含關鍵字key,節點x的key值記為 ke y x k ey x 如果y是x的左子樹中的乙個結點,則 ke y y ke y x k ey y ke y x 如果y是x的右子樹的乙個結點,則 ...
資料結構查詢演算法之二叉查詢樹
關於二叉查詢樹,介紹肯定是很多的,這裡我列舉的下面的 和思想,是按照二叉查詢樹,但是沒有使用二叉樹的資料結構,而是按照陣列索引建立邏輯上的二叉樹結構,並使用二叉樹的遞迴方式查詢給定的值,並在注釋中對不同的情況提出一點自己的看法,建立樹的過程參考堆排序的思想,並且在結構上大致相同,所以需要注意的地方也...