数据结构之树的应用梳理(一)二叉排序树
来源:互联网 发布:淘宝系统架构 编辑:程序博客网 时间:2024/06/07 18:31
一、二叉排序树
二叉排序树也称二叉查找树,是学习数据结构树的第一步,其主要性质如下:
(1)若左子树不空,则左子树上所有结点的值均小于或等于它的根结点的值;
(2)若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值;
(3)左、右子树也分别为二叉排序树
(4)无等值节点
对二叉排序树的操作包括:
1.树的创建(节点插入)
2.树的遍历(前序,中序,后序)
3.树中节点的删除
树的结构体为:
struct Tree{ int val; Tree *left; Tree *right; Tree(int x) : val(x), left(NULL), right(NULL) { }};
树的建立和插入的代码:
void insert(int val, Tree *root) //val为要插入的节点权值,root为根节点指针{ if (val == root->val){ return; } if (val < root->val&&root->left == NULL){ root->left = new Tree(val); } if (val < root->val&&root->left != NULL){ insert(val, root->left); } if (val>root->val&&root->right == NULL){ root->right = new Tree(val); } if (val>root->val&&root->right != NULL){ insert(val, root->right); }}
先序,中序,后序遍历的函数为:
void xianxu(Tree *root){ cout << root->val << " "; if (root->left != NULL) { xianxu(root->left); } if (root->right != NULL) { xianxu(root->right); }}void zhongxu(Tree *root){ if (root->left) { zhongxu(root->left); } cout << root->val << " "; if (root->right) { zhongxu(root->right); }}void houxu(Tree *root){ if (root->left) { houxu(root->left); } if (root->right) { houxu(root->right); } cout << root->val << " ";}
二叉树的节点删除要分情况讨论
情况一:
要删除的节点为叶子结点无左子树和右子树
操作:
直接删去该节点
情况二:
要删除的节点只有一个子树(左子树或者右子树)
操作:
将父节点指向删除节点的指针指向那个单一的子树
情况三:
要删除的节点有两个子树(左子树和右子树)
操作:
遍历删除节点的左子树(或者右子树),找到最大的左子树节点(或者最小的右子树节点),改为递归删除该节点(左最小或者右最大)并将该节点的val赋值给删除的节点。
阅读全文
0 0
- 数据结构之树的应用梳理(一)二叉排序树
- 数据结构---树的应用----二叉排序树(查找)
- 数据结构之(二叉排序树)
- SDUT(3373)数据结构实验之查找一:二叉排序树
- 数据结构实验之查找一:二叉排序树 SDUT 二叉排序树的建立与判断 (与删除)
- (模板题)sdut 3373 数据结构实验之查找一:二叉排序树(二叉排序树的建立)
- 数据结构实验之查找一:二叉排序树
- 数据结构实验之查找一:二叉排序树
- 数据结构实验之查找一:二叉排序树
- 数据结构实验之查找一:二叉排序树
- SDUT3373数据结构实验之查找一:二叉排序树
- 数据结构实验之查找一:二叉排序树
- 数据结构实验之查找一:二叉排序树
- 数据结构实验之查找一:二叉排序树
- 数据结构实验之查找一:二叉排序树
- SDUTACM 数据结构实验之查找一:二叉排序树
- 数据结构实验之查找一:二叉排序树
- 数据结构实验之查找一:二叉排序树
- D
- DBCP应用工具类
- qt qml 高德地图--WebAPI 获取静态地图
- Google VR开发-Cardboard VR SDK头部追踪实现(牵涉到的抽象模型)
- HTTPS with Client Certificates on Android
- 数据结构之树的应用梳理(一)二叉排序树
- Kotlin Reference (五) Packages
- SAP ERP系统业务优化之采购订单追踪
- kubernetes学习记录(5)——服务发现机制与Cluster DNS的安装(无CA认证版)
- 使用job自动抓取网页数据发送邮件,以springboot服务启动
- Oracle序列
- 归并排序
- h5 video 追加
- Springmvc工作流程