[数据结构]10.2实现binary search tree的查找和插入操作,用非递归的方法实现
Posted yccy1230
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[数据结构]10.2实现binary search tree的查找和插入操作,用非递归的方法实现相关的知识,希望对你有一定的参考价值。
//*****************************************************insert循环版**************************************
template<class Record>
Error_code Binary_search_tree<Record>::c_insert(const Record & item)
Binary_node<Record> *current=root, *previous=root;
if(!current)root = new Binary_node<Record>(item);
else
while (current != NULL)
previous = current;
if (current->data > item)current = current->left_child;
else if (current->data < item)current = current->right_child;
else return duplicate_error;
if (previous->data > item)
previous->left_child = new Binary_node<Record>(item);
else
previous->right_child = new Binary_node<Record>(item);
return success;
//******************************************************remove循环版*************************************
template<class Record>
Error_code Binary_search_tree<Record>::c_remove(const Record & item)
if (root == NULL || root->data == item)
return destroy(root);
else
Binary_node<Record> *current = root, *previous = root;
while (current != NULL)
previous = current;
if (current->data > item)current = current->left_child;
else if (current->data < item)current = current->right_child;
else return destroy(current);
return not_present;
template<class Record>
Error_code Binary_search_tree<Record>::destroy(Binary_node<Record>*& sub_root)
if (sub_root == NULL)return not_present;
Binary_node<Entry> *to_delete = sub_root;
if (sub_root->left_child == NULL) sub_root = sub_root->right_child;
else if (sub_root->right_child == NULL) sub_root = sub_root->left_child;
else
to_delete = sub_root->left_child;
Binary_node<Entry> *parent = sub_root;
while (!to_delete->right_child)
parent = to_delete;
to_delete = to_delete->right_child;
sub_root->data = to_delete->data;
if (parent == sub_root)sub_root->left_child = to_delete->left_child; //Special condition:no right_child under to_delete
else parent->right_child = to_delete->right_child;
delete to_delete;
return success;
以上是关于[数据结构]10.2实现binary search tree的查找和插入操作,用非递归的方法实现的主要内容,如果未能解决你的问题,请参考以下文章
java 如何实现 binary search 二分查找法?
关于二分查找binary_search的结构体struct运用
[Math] Beating the binary search algorithm – interpolation search, galloping search