BST樹的基本實現

2021-08-28 16:29:55 字數 1437 閱讀 4611

基本操作:建立,銷毀,清空,增刪改查,先中後層遍歷。

都很簡單,就是刪除乙個節點要分類討論。

在乙個二叉搜尋樹中,乙個基本性質,左子樹的所有節點小於根節點,右子樹的所有節點大於等於根節點,依據這個性質討論刪除操作。

當被刪除元素左子樹為空、右子樹為空,或者都為空,直接用左子樹或者右子樹替代。如刪除15,設*root指向15這個節點

當左右子樹都不空是,找到右子樹的最小值k,更改root->data = k, 從右子樹刪除k,鍵值為k的節點左子樹肯定為空,滿足情況1.

node* p = root->rch;

while (p->lch)

root->data = p->data;

erase(root->rch, p->data) //遞迴

bst樹完整**如下

#include #include #include using namespace std;

typedef struct node

node;

void create(node** root)

void clean(node** root)

}void destory(node** root)

void insert(node **root, int value)

else

else

}}void input(node** root, int n)

}void pre_output(node *root)

}void post_output(node *root)

}void mid_output(node *root)

}void layer_output(node *root)

if (temp->rch)

}}node* find(node *root, int key)

else if (root->data > key)

else

}return null;

}void erase(node** root, int value)

else if ((*root)->rch == null)

else

(*root)->data = t->data;

erase(&((*root)->rch), t->data);}}

else if ((*root)->data > value)

else

}}int main()

bst樹的說明

中序遍歷 遞迴的方法 x 為指標 inorder tree walk x if x null inorder tree walk x.left print x.key inorder tree walk x.right 非遞迴的方法 將遞迴的實現進行翻譯 inorder tree walk x if...

BST樹的定義

二叉搜尋樹 bst樹 又叫二叉排序樹,二叉查詢樹。它或者是一棵空樹 或者是具有以下性質的二叉樹 1.每個結點都有乙個資料域,且所有節點的資料域互不相同 2.若它的左子樹不為空,則左子樹上的所有結點的值都小於根節點的值 3.若它的右子樹不為空,則右子樹上的所有節點的值都大於根節點的值 4.左子樹和右子...

BST樹的查詢

bst樹的查詢 1 查詢思想 首先將給定的k值與二叉排序樹的根結點的關鍵字進行比較 若相等 則查詢成功 給定的k值小於bst的根結點的關鍵字 繼續在該結點的左子樹上進行查詢 給定的k值大於bst的根結點的關鍵字 繼續在該結點的右子樹上進行查詢。2 演算法實現 遞迴演算法 bstnode bst se...