当前位置: 首页 > wzjs >正文

开发商延期交房怎么办广州seo服务

开发商延期交房怎么办,广州seo服务,wordpress模板开发套用,重庆网站建设eyouc408答疑 文章目录 三、树形查找二叉排序树(BST)二叉排序树中结点值之间的关系二叉树形查找二叉排序树的查找过程示例 向二叉排序树中插入结点插入过程示例 构造二叉排序树的过程构造示例 二叉排序树中删除结点的操作情况一:被删除结点是叶结点…

408答疑


文章目录

  • 三、树形查找
    • 二叉排序树(BST)
      • 二叉排序树中结点值之间的关系
      • 二叉树形查找
      • 二叉排序树的查找过程
        • 示例
      • 向二叉排序树中插入结点
        • 插入过程
        • 示例
      • 构造二叉排序树的过程
        • 构造示例
      • 二叉排序树中删除结点的操作
        • 情况一:被删除结点是叶结点
        • 情况二:被删除结点只有一棵左子树或右子树
        • 情况三:被删除结点有左、右两棵子树
        • 二叉排序树中删除并插入某结点的分析
      • 代码实操
        • 结构定义
        • 插入操作
        • 查找操作
        • 删除操作
        • 中序遍历
  • 六、参考资料
    • 鲍鱼科技课件
    • 26王道考研书


三、树形查找

二叉排序树(BST)

  • 构造二叉排序树的目的并不是排序,而是提高查找、插入和删除关键字的速度,二叉排序树这种非线性结构也有利于插入和删除的实现。
  • 二叉排序树(也称二叉查找树)或者是一棵空树,或者是具有下列特性的二叉树:
    1. 若左子树非空,则左子树上所有结点的值均小于根结点的值。
    2. 若右子树非空,则右子树上所有结点的值均大于根结点的值。
    3. 左、右子树也分别是一棵二叉排序树。

二叉排序树中结点值之间的关系

根据二叉排序树的定义,左子树结点值 < 根结点值 < 右子树结点值,因此对二叉排序树进行中序遍历,可以得到一个递增的有序序列。如下图所示二叉排序树的中序遍历序列为 123468。

在这里插入图片描述

二叉树形查找

  • 二叉树形查找是以二叉排序树(BST)为基础进行查找,并演化出相应的平衡树AVL和红黑树RB。
  • 除了掌握基础的查找,还需掌握平衡树的平衡调整过程。

二叉排序树的查找过程

二叉排序树的查找是从根结点开始,沿某个分支逐层向下比较的过程。若二叉排序树非空,先将给定值与根结点的关键字比较,若相等,则查找成功;若不等,若小于根结点的关键字,则在根结点的左子树上查找,否则在根结点的右子树上查找。这显然是一个递归的过程。

示例

如下图中查找值为 4 的结点。首先 4 与根结点 6 比较。由于 4 小于 6,所以在根结点 6 的左子树中继续查找。由于 4 大于 2,所以在结点 2 的右子树中查找,查找成功。

在这里插入图片描述

向二叉排序树中插入结点

二叉排序树作为一种动态树表,其特点是树的结构通常不是一次生成的,而是在查找过程中,当树中不存在关键字值等于给定值的结点时再进行插入的。

插入过程
  • 若原二叉排序树为空,则直接插入;
  • 否则,若关键字 k k k 小于根结点值,则插入到左子树,若关键字 k k k 大于根结点值,则插入到右子树。
  • 插入的结点一定是一个新添加的叶结点,且是查找失败时的查找路径上访问的最后一个结点的左孩子或右孩子。
示例

下图展示了在一棵二叉排序树中依次插入结点 28 和结点 58 的过程,虚线表示的边是其查找的路径。

在这里插入图片描述

构造二叉排序树的过程

从一棵空树出发,依次输入元素,将它们插入二叉排序树中的合适位置。设查找的关键字序列为 {45, 24, 53, 45, 12, 24},则生成的二叉排序树如下图所示。

构造示例

在这里插入图片描述

每一步都是根据关键字与当前树中结点的比较结果,决定插入的位置。

二叉排序树中删除结点的操作

在二叉排序树中删除一个结点时,不能简单地删除该结点及其所有子结点,而是需要重新链接因删除结点而断开的二叉链表,确保二叉排序树的性质不丢失。删除操作的实现过程按以下三种情况来处理:

情况一:被删除结点是叶结点
  • 若被删除结点 z z z 是叶结点,则直接删除,不会破坏二叉排序树的性质。

在这里插入图片描述

情况二:被删除结点只有一棵左子树或右子树
  • 若结点 z z z 只有一棵左子树或右子树,则让 z z z 的子树成为 z z z 父结点的子树,替代 z z z 的位置。

在这里插入图片描述

情况三:被删除结点有左、右两棵子树
  • 若结点 z z z 有左、右两棵子树,则令 z z z 的直接后继(或直接前驱)替代 z z z,然后从二叉排序树中删去这个直接后继(或直接前驱),这样就转变成了第一或第二种情况。

在这里插入图片描述

二叉排序树中删除并插入某结点的分析

若在二叉排序树中删除并插入某结点,得到的二叉排序树是否和原来的相同?

不一定。这个问题需要考虑删除和插入操作对树结构的影响,以及这些操作是否能够恢复到原始的树结构。具体分析可能涉及到树的平衡性、结点的相对位置以及操作的顺序等因素。

代码实操

结构定义
  • 定义二叉排序树的结点结构体 BSTNode,包含数据域 data,指向左子树的指针 left 和指向右子树的指针 right
typedef struct BSTNode {ElemType data;struct BSTNode *left;struct BSTNode *right;
} BSTNode, *BSTRoot;
插入操作
  • 在二叉排序树中插入值 x,递归地找到正确的位置插入新结点。
bool insertBST(BSTNode *&t, int x) {if (t == NULL) {t = (BSTNode*)malloc(sizeof(BSTNode));t->data = x;t->left = t->right = NULL;return true; // 插入成功}if (x == t->data)return false; // 插入失败if (x < t->data)insertBST(t->left, x);elseinsertBST(t->right, x);return true;    
}
查找操作
  • 在二叉排序树中查找关键字 key,递归地遍历树直到找到或到达叶子结点。
BSTNode* searchBST(BSTNode *t, int key) {if (t == NULL || t->data == key)return t;if (key < t->data)return searchBST(t->left, key);else return searchBST(t->right, key);
}
删除操作
  • 删除二叉排序树中关键字为 key 的结点,处理三种情况:无子结点、一个子结点、两个子结点。
bool removeBST(BSTNode *&t, int key) {if (t == NULL)return false; // 删除失败if (key < t->data)removeBST(t->left, key);else if (key > t->data)removeBST(t->right, key);else {BSTNode *p = NULL;if (t->left != NULL && t->right != NULL) {p = t->left;while (p->right != NULL)p = p->right;t->data = p->data;removeBST(t->left, p->data);} else {BSTNode *child = (t->left != NULL) ? t->left : t->right;p = t;t = child;free(p);}}return true;
}
中序遍历
  • 对二叉排序树进行中序遍历,输出有序序列。
void sortBST(BSTNode *t) {if (t != NULL) {sortBST(t->left);printf("%d ", t->data);sortBST(t->right);}
}

六、参考资料

鲍鱼科技课件

b站免费王道课后题讲解:
在这里插入图片描述

网课全程班:
在这里插入图片描述

26王道考研书


文章转载自:

http://hUq2lyj3.pwdgy.cn
http://ijiOsdHJ.pwdgy.cn
http://gDHL4Bes.pwdgy.cn
http://wo3IMrMg.pwdgy.cn
http://PhqTD9yE.pwdgy.cn
http://asJxiSqA.pwdgy.cn
http://GDSZoYy5.pwdgy.cn
http://HGOTmjOx.pwdgy.cn
http://jaPT2f0s.pwdgy.cn
http://byYnML8Q.pwdgy.cn
http://3Vjo664S.pwdgy.cn
http://rirwyfR3.pwdgy.cn
http://Jmljafd5.pwdgy.cn
http://7kgstgx1.pwdgy.cn
http://g47xDIrb.pwdgy.cn
http://zVGilumd.pwdgy.cn
http://XYNHaAql.pwdgy.cn
http://TIcx4JKN.pwdgy.cn
http://0E78BIYW.pwdgy.cn
http://xZ4L92uc.pwdgy.cn
http://VNXZjile.pwdgy.cn
http://NWqMp8e6.pwdgy.cn
http://ocJRNCpP.pwdgy.cn
http://P4IJOhjW.pwdgy.cn
http://54iNJTgK.pwdgy.cn
http://I1ZnkDgH.pwdgy.cn
http://dY4S9jx5.pwdgy.cn
http://rne2hSb1.pwdgy.cn
http://4fwJubmi.pwdgy.cn
http://9fDJhnVL.pwdgy.cn
http://www.dtcms.com/wzjs/738864.html

相关文章:

  • 浙江建筑信息网站多用户网店系统
  • 可以用足球做的游戏视频网站wordpress后台进不去
  • 开网站建设工作是如何十五种网络营销工具
  • 传奇手机版网站淘宝网店代运营正规公司
  • 购物网站建设要求网页版哔哩哔哩
  • 衡水网站建设衡水网站建设和网页设计的关系
  • 关键词查询的分析网站wordpress主题如何汉化
  • 大型商家进驻网站开发周口网站建设 网站制作 网络推广
  • 网站设计 素材两学一做登录网站
  • 创建网站快捷方式到桌面文创产品设计分析
  • 深圳福田最大网站公司网站套餐可以分摊吗吗
  • 网站seo在线诊断网站快照前显示中文怎么做的
  • 网站首页二级下拉框怎么做百度联盟怎么做自己的网站
  • 欧派全屋定制联系电话seo比较好的优化
  • 网站导航作用无锡网站建设专注千客云网络
  • 零用贷网站如何做wordpress添加新的模板
  • 辽宁网站建设招标自己如何建立网站
  • 企业网站登录入口官网wordpress memcache插件
  • 南宁网站建设索q.479185700国内优秀企业网站设计欣赏
  • 网站淘宝客怎么做个人网页设计作品下载
  • 山西省建设招聘信息网站设计公司网页制作
  • 清华大学学生工作做网站政务服务网站建设整改报告
  • 慈溪高端网站设计wordpress php7不兼容
  • 维护网站的一般方法google浏览器网页版
  • 网站不被收录了网站后台软件可以自己做吗
  • 免费的源代码分享有哪些网站dede分类信息网站
  • 蚌埠网站制作公司费用建筑模型网站
  • 济南做网站哪里好win7怎么重新安装wordpress
  • 四合一网站建设源码软件开发周期
  • 学院网站建设的现状分析东莞网站优化哪家好