二叉搜尋樹的實現

2021-08-27 14:51:32 字數 822 閱讀 7287

二叉搜尋樹的刪除:

(1)、沒有左孩子,直接把右孩子替代刪除結點

(2)、有左孩子但左孩子沒有右孩子,則把左孩子替代刪除結點

(3)、其它,把左孩子的最大的結點替代刪除結點

時間複雜度o(logn)

#include #include struct node ;

node* ins(node* p, int val) else else

return p; }}

bool find(node* p, int val) else if (p->val == val) else if (p->val > val) else

}node* del(node* p, int val) else if (p->val > val) else if (p->val < val) else if (p->left == null) else if (p->left->right == null) else

return p;

}int main() ;

int len, i;

node root;

root.left = root.right = null;

root.val = 0;

len = sizeof(a) / sizeof(int);

for (i = 0; i < len; i++)

if (find(&root, 15))

del(&root, 15);

if (!find(&root, 15))

return 0;

}

二叉搜尋樹 二叉搜尋樹

題目 二叉搜尋樹 time limit 2000 1000 ms j a others memory limit 32768 32768 k j a others total submission s 6945 accepted submission s 3077 problem descripti...

二叉搜尋樹的實現

binarysearchtree.h inte ce for the binarysearchtree class.include binarytreenode.h include binarytree1.h if defined afx binarysearchtree h 1cd2ff9d 73...

二叉搜尋樹的實現

includeusing namespace std 二叉搜尋樹左兒子的值比當前節點小,右兒子的數值比當前節點大 struct node 建立樹 node insert node p,int x else return p 查詢 bool find node p,int x else return ...