二叉搜尋樹 插入 查詢

2021-08-16 18:43:32 字數 2116 閱讀 7260

宣告: 第一次寫二叉搜尋樹, 可能會有bug

這棵二叉搜尋樹以中序遍歷的方式輸出, 所以插入(儲存的規則也是按照中序遍歷的規則)

#include

using namespace std;

struct node ;

node *root, *nil; //根節點和乙個空結點

void insert(int key)

else x = x->right; //大於等於的向右遍歷

}z->

parent

= y; //確立了z的父節點

if(y == nil) root = z;

else

}void inorder(node *u)

void preorder(node *u)

int main()

inorder(root); //中序遍歷

cout << endl;

preorder(root);}/*

830 88 12 1 20 17 25 66

*/

下面多了乙個查詢

#include

using namespace std;

struct node ;

node *root, *nil; //根節點和乙個空結點

void insert(int key)

else x = x->right; //大於等於的向右遍歷

}z->

parent

= y; //確立了z的父節點

if(y == nil) root = z;

else

}void inorder(node *u)

void preorder(node *u)

node * find(int key)

return nil;

}int main()

inorder(root); //中序遍歷

cout << endl;

preorder(root);

cout << endl;

for(int i =

0; i <

7; ++i) else cout <<

"didn't find it\n\n";

} }/*

830 88 12 1 20 17 25 66

1 2 11 12 34 33 66

*/

二叉搜尋樹的刪除操作

#include

using namespace std;

struct node ;

node *root, *nil; //根節點和乙個空結點

void insert(int key)

else x = x->right; //大於等於的向右遍歷

}z->

parent

= y; //確立了z的父節點

if(y == nil) root = z;

else

}void inorder(node *u)

void preorder(node *u)

node * find(int key)

return nil;

}void delete(int key)

else

return;

}if(key < x->key) x = x->left;

else x = x->right;

}}int main()

inorder(root); //中序遍歷

cout << endl;

preorder(root);

cout << endl;

delete(20);

cout << endl;

inorder(root); //中序遍歷

cout << endl;

preorder(root);

cout << endl;}/*

830 88 12 1 20 17 25 66

1 2 11 12 34 33 66

*/

二叉搜尋樹的插入,查詢,刪除

include using namespace std template class node 預設析構函式 templatenode node template node node t value template class bstree 預設析構 void buildbstree 建立二叉樹 ...

二叉搜尋樹的查詢 插入 刪除

coding utf 8 time 2020 9 23 15 56 author julyli file bst.py class bitreenode def init self,data self.data data self.lchild none self.rchild none self....

二叉搜尋樹的插入 刪除 查詢

1 若左子樹不空,則左子樹上所有節點的值均小於它的根節點的值 2 若右子樹不空,則右子樹上所有節點的值均大於它的根節點的值 3 左 右子樹也分別為二叉排序樹 4 沒有鍵值相等的節點 插入的資料之後要滿足二叉樹的性質1和2,所以要先找到插入位置,且插入的位置一定是在葉子節點的下面 所以插入分兩個步驟 ...