宣告: 第一次寫二叉搜尋樹, 可能會有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,所以要先找到插入位置,且插入的位置一定是在葉子節點的下面 所以插入分兩個步驟 ...