二叉查找树
来源:互联网 发布:阿里云到底是干嘛的 编辑:程序博客网 时间:2024/06/06 20:17
二叉树的一个重要应用是它们在查找中的应用。为了更方便的阐述二叉查找树的概念,我们这里考虑关键字为互异整数的情形。
使二叉树成为二叉查找树的性质是,对树中的每个节点N,它的左子树的所有关键字小于N的关键字值,而又子树的所有关键字大于N的关键字值。后面我们可以看到,这种方式可以保证元素用统一的方式排序。
1. 二叉树节点声明
struct TreeNode{int element;TreeNode* left;TreeNode* right;};typedef struct TreeNode *PtrNode;
2. 树的初始化
PtrNode MakeEmpty(PtrNode node){if (node != nullptr) {MakeEmpty(node);MakeEmpty(node);delete node;}return nullptr;}
3. 插入操作
PtrNode Insert(int x, PtrNode& node){if (node == nullptr) {node = new TreeNode;node->element = x;node->left = node->right = nullptr;}else if (x < node->element) {node->left = Insert(x, node->left);}else if (x > node->element) {node->right = Insert(x, node->right);}return node;}
4. 查找操作
PtrNode Find(int x, PtrNode node){if (node == nullptr) {return nullptr;}else if (x < node->element) {return Find(x, node->left);}else if (x > node->element) {return Find(x, node->right);}// find elementelse {return node;}}
5. 查找最小值
PtrNode FindMin(PtrNode node){if (node == nullptr)return nullptr;else if (node->left == nullptr)return node;elsereturn FindMin(node->left);}6. 删除操作
PtrNode Delete(int x, PtrNode node){if (x < node->element) {node->left = Delete(x, node->left);}else if (x > node->element) {node->right = Delete(x, node->right);}// two or more nodeelse if (node->left && node->right) {PtrNode temp = FindMin(node->right);node->element = temp->element;node->right = Delete(temp->element, node->right);}else {PtrNode temp = node;if (node->left == nullptr) {node = node->right;}else if (node->right == nullptr) {node = node->left;}delete temp;}return node;}
0 0
- 查找--二叉查找树
- 二叉树、二叉查找树
- 二叉树 & 二叉查找树
- 【查找结构】二叉查找树
- 查找之二叉树查找
- 查找之二叉树查找
- 查找:二叉查找树总结
- 二叉树查找树...
- 二叉树查找树
- 查找--遍历二叉树
- 二叉查找树
- 二叉查找树实现
- 二叉查找树
- 动态二叉查找树
- 最优二叉查找树
- 二叉查找树
- 二叉查找树
- 平衡二叉查找树
- github 常用命令
- cocos2dx 实习生培训计划
- leetcode题解日练--2016.7.10
- 多项式求根
- c 语言的标准输入输出,scanf,printf
- 二叉查找树
- 线性代数运算
- HashMap循环遍历方式及其性能对比
- 遍历HashMap的三种方法
- 第九次课总结
- c语言的基本数据类型
- 文章标题
- HashMap的三种遍历方法 2
- VBA快速获取创建sheet链接