[数据结构]10.2实现binary search tree的查找和插入操作,用非递归的方法实现
来源:互联网 发布:跑步计时器软件 编辑:程序博客网 时间:2024/06/13 13:45
//*****************************************************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);elseprevious->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_deleteelse parent->right_child = to_delete->right_child;}delete to_delete;return success;
0 0
- [数据结构]10.2实现binary search tree的查找和插入操作,用非递归的方法实现
- 二叉搜索树(Binary Search Tree)的递归和非递归代码实现(C++)
- 二叉搜索树(Binary Search Tree)的递归和非递归代码实现(C++)
- 正确的binary search tree -- 非递归插入
- C++数据结构--二分查找的递归和非递归实现
- 数据结构之二叉查找树的递归和非递归实现的一些方法
- 查找二叉树的实现(查找,删除,插入)分别用递归和非递归
- 如何使用C++递归来实现查找BST(Binary Search Tree)的最大高度
- 二叉查找树(binary search tree)的实现
- 二叉查找树(Binary Search Tree)的实现
- 二叉查找树的原理与实现 Binary Search Tree
- 数据结构用递归和非递归方法实现二分查找法
- 折半查找的递归实现和非递归实现
- 折半查找的递归实现和非递归实现
- 二叉排序树/二叉查找树 (binary sort tree/ binary search tree)的C语言实现
- 折半查找的递归与非递归方法实现
- 二分法查找的实现 递归与非递归方法
- 98. Validate Binary Search Tree--非递归的方法可以想下
- 堆外内存(off-heap),堆内存(on-heap)
- 布局时的公共样式
- Web经典配置vs登录用户的信息进行保存vs绝对路径
- 第十一周项目训练8.3 圆,圆柱类族的设计
- Android引导蒙层,安卓新手引导图,引导图层,支持椭圆,圆形,矩形多种形状,一行代码快速搞定
- [数据结构]10.2实现binary search tree的查找和插入操作,用非递归的方法实现
- JavaScript学习--Item31 值得你挑战的JavaScript面试题(45题)
- Mysql 存储引擎中InnoDB与Myisam的主要区别
- 记录传 self 给 c++ 代码时计数器加 1 的 bug
- HDU 2516取石子游戏(巴什博弈)
- [数据结构]10.4实现avl Tree的插入和删除操作。
- 初学单例模式
- 说说mvc模式的原理,它在android中的运用
- 6-7 8255 控制交通灯