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

建设企业功能型网站企业信用信息公示系统广西

建设企业功能型网站,企业信用信息公示系统广西,注册自己的网站,服装网站开发目的查找 #x1f388;3动态查找表#x1f52d;3.1二叉排序树#x1f3c6;3.1.1二叉排序树的类定义#x1f3c6;3.1.2二叉排序树的插入和生成#x1f3c6;3.1.3二叉树的查找#x1f3c6;3.1.4二叉排序树的删除 #x1f52d;3.2平衡二叉树#x1f3c6;3.2.1平衡二叉树的调整… 查找 3动态查找表3.1二叉排序树3.1.1二叉排序树的类定义3.1.2二叉排序树的插入和生成3.1.3二叉树的查找3.1.4二叉排序树的删除 3.2平衡二叉树3.2.1平衡二叉树的调整方法RR型调整LL型调整RL型调整LR型调整 3.2.2平衡二叉树的查找分析 3动态查找表 3.1二叉排序树 二叉排序树又称二叉查找树其或者是一棵空树或者是满足下列性质的二叉树 若它的左子树不空则左子树上所有元素的值均小于根结点元素的值。若它的右子树不空则右子树所有元素的值均大于根结点元素的值。左右子树分别为二叉排序树。 上述定义要求查找表中没有相同关键字的数据元素。 根据二叉排序树的定义可知对二叉排序树进行中序遍历可以得到一个有序序列。因此对于任意一个关键字序列构造一棵二叉排序树其实质是对此关键字序列进行排序使其变成有序序列。 3.1.1二叉排序树的类定义 #define _CRT_SECURE_NO_WARNINGS 1 #include iostream using namespace std; typedef int KeyType; typedef int InfoType; typedef struct {KeyType key;//KeyType为关键字数据类型InfoType otherinfo;//其他域 }DElemType; typedef struct BstNode {DElemType data;BstNode* lchild, * rchild; }BstNode; class BsTree { private:BstNode* bst;void Insert(BstNode* t, DElemType e);//二叉排序树中递归插入一个结点BstNode* Search(BstNode* t, KeyType key);//递归查找关键字key public:BsTree()//构造函数创建空的二叉排序树{bst NULL;}BstNode* SearchBST(KeyType key);//查找关键字等于key的结点void InsertBST(DElemType e);//递归创建的二叉树传递给私有成员void CreatBiTree(DElemType d[], int n);//生成二叉排序树n个数据在数组d中void DeleteBst(BstNode* t, DElemType e);//删除二叉排序树中的一个结点void Deletep(BstNode* p);/从二叉排序树中删除结点p,并重接它的左子树或右子树 };3.1.2二叉排序树的插入和生成 二叉排序树的插入操作应保证插入后仍满足二叉排序树的定义新插入的结点总是叶子结点。其插入过程如下 若二叉树t为空则生成一个根结点。将key于根结点的关键字比较若keydata,则将key插入到根结点的左子树中否则插入到根结点的右子树中。 void BsTree::Insert(BstNode* t, DElemType e) {if (t NULL){t new BstNode;t-lchild t-rchild NULL;t-data e;return;}if (e.key t-data.key)Insert(t-lchild, e);//在左子树插入结点eelseInsert(t-rchild, e);//在右子树插入结点e } void BsTree::InsertBST(DElemType e) {BstNode* t bst;Insert(t, e);bst t; } void BsTree::CreatBiTree(DElemType d[], int n) {for (int i 0; i n; i){InsertBST(d[i]);} }3.1.3二叉树的查找 由于二叉排序树按中序遍历可得有序序列所以在二叉排序树中进行查找与二分查找类似也是一个逐步缩小查找范围的过程查找的步骤如下 若二叉树t为空或keyt-data.key,则返回t。否则将key与根结点的关键字比较若keyt-datda.key,则递归查找左子树否则递归查找右子树。 BstNode* BsTree::Search(BstNode* t, KeyType key) {if (t NULL || key t-data.key)return t;else if (key t-data.key)return Search(t-lchild, key);//查找左子树elsereturn Search(t-rchild, key);//查找右子树 } BstNode* BsTree::SearchBST(KeyType key) {BstNode* t bst;return Search(t, key); }3.1.4二叉排序树的删除 二叉排序树中删除结点的原则是删除结点后仍是二叉排序树。 设在二叉排序树被删除结点是p,其双亲结点是f.不失一般性设p的左孩子或p为根结点。分三种情况讨论 若p为叶子结点则直接删除。如图a所示。若p只有左子树pl或只有右子树pr则令pl或pr直接成为双亲结点f的子树。如图b或c所示。 若被删除结点p既有左子树pl又有右子树pr,则在pl中选值最大的代替p,该数据按二叉排序树的性质应在左子树的最右下结点。 void BsTree::DeleteBst(BstNode* t, DElemType e) {if (!t)return;else{if (e.key t-data.key)Deletep(t);else if (e.key t-data.key)DeleteBst(t-lchild, e);elseDeleteBst(t-rchild, e);} } void BsTree::Deletep(BstNode* p) {if (!p)return;BstNode* s, * q;if (p-rchild NULL){q p;p p-lchild;delete q;}else if (p-lchild NULL){q p;p p-rchild;delete q;}else {q p;s p-lchild;while (s-rchild ! NULL){q s;s s-rchild;}p-data s-data;if (q ! p)q-rchild s-lchild;elseq-lchild s-rchild;delete s;} }3.2平衡二叉树 平衡二叉树或者是一棵空的二叉排序树或者是具有下列性质的二叉排序树 它的左右子树均为平衡二叉树。左子树和右子树的高度之差的绝对值不超过1。 ✅若将二叉树上结点的平衡因子定义为该结点的左子树的高度与右子树的高度之差则平衡二叉树上的所有结点的平衡因子只可能是1,0和-1。若平衡二叉树上有一个结点的平衡因子的绝对值大于1则该树就不是一棵平衡二叉树。 3.2.1平衡二叉树的调整方法 若向平衡二叉树中插入一个新结点而引起不平衡则采用以下方法进行调整 不涉及到不平衡点的双亲即以不平衡点为根的子树高度应保持不变。新结点插入后向根结点回溯找到第一个原平衡因子不为0的结点。在调整中仅涉及前面提到的最小子树。调整后二叉树的性质不变。 RR型调整 RR型调整是指在A结点的右孩子设为B结点的右子树上插入一个结点使得A结点的平衡因子由-1变为-2引起不平衡而产生的调整。如图所示带阴影区域表示插入结点h表示子树的树高。调整方法为单向左旋转平衡具体方法如下 把结点B变为调整后的最小子树的根结点。把结点A变成结点B的左孩子。把BL变成结点A的右子树。 LL型调整 LL型调整是指在A结点的左孩子设为B结点的左子树上插入一个结点使得A结点的平衡因子由1变为2引起不平衡而产生的调整。如图所示带阴影区域表示插入结点h表示子树的树高。调整方法为单向右旋转平衡具体方法如下 把结点B变为调整后的最小子树的根结点。把结点A变成结点B的右孩子。把BR变成结点A的左子树。 RL型调整 RL型调整是指在A结点的右孩子设为B结点的左子树上插入一个结点使得A结点的平衡因子由-1变为-2引起不平衡而产生的调整。如图所示带阴影区域表示插入结点h表示子树的树高。调整方法为右旋转后向左旋转平衡具体方法如下 把结点B的左孩子设为C变为调整后的最小子树的根结点。把结点A变成结点C的左孩子结点B变为结点C的右孩子。把结点C的右子树变为结点B的左子树。把结点C的左子树变为结点A的右子树。 LR型调整 LR型调整是指在A结点的左孩子设为B结点的右子树上插入一个结点使得A结点的平衡因子由1变为2引起不平衡而产生的调整。如图所示带阴影区域表示插入结点h表示子树的树高。调整方法为左旋转后向右旋转平衡具体方法如下 把结点B的右孩子设为C变为调整后的最小子树的根结点。把结点A变成结点C的右孩子结点B变为结点C的左孩子。把结点C的右子树变为结点A的左子树。把结点C的左子树变为结点B的右子树。 3.2.2平衡二叉树的查找分析 由于平衡二叉树关键字的查找过程与二叉排序树关键字的查找过程相同因此在平衡二叉树的查找过程中关键字的比较次数不超过平衡二叉树的深度。 好啦关于动态查找表二叉排序树和平衡二叉树的知识到这里就先结束啦后期会继续更新学习数据结构与算法的相关知识欢迎大家持续关注、点赞和评论❤️❤️❤️
http://wiki.neutronadmin.com/news/347400/

相关文章:

  • 如何组建做网站的团队公司网站做排名用什么搜索好点
  • 高端网站建设制作怎样为网站做推广
  • 梦之翼wordpress主题站北京网站关键字优化
  • 做网站如何用代码把字体变大seo工作室合作
  • 微网站开发技巧wordpress电商模板
  • 福州市住房和城乡建设网站西安高校网站建设
  • 泉州市网站api建设知识问答网站开发
  • 个性化网站成功的案例手机如何开发软件
  • 辽宁省建设网站地推app推广赚佣金
  • 开贴纸网站要怎么做网站推广的方式包括哪些
  • 河南营销网站建设联系方式江苏建设类高级工程师在那个网站公示
  • 郑州网站公司哪家好中国住房与城乡建设部官方网站
  • 新网站备案直播间网站开发
  • 网站制作公司有没有版权jquery插件 wordpress
  • 自己搞个网站需要多少钱做网站怎么跟客户谈话
  • 公司网站制作需要什么django商城网站开发的功能
  • 综合门户类网站有哪些尚海整装装修怎么样
  • 建设个人博客网站制作我的世界做壁纸网站打不开
  • 杭州网站建设费用多少如何建立一个微信公众号平台
  • 如何做优酷网站赚钱网站建设心得体会
  • 企业网站怎么制作流程网站信息内容建设局通报
  • 网站策划初级方案模板wordpress为什么放弃
  • 长沙中小企业网站建设建设网站怎么提需求
  • 合同 制作 网站网上购物商城排名
  • 网站建设报价新鸿儒好看的网站页面
  • 北京网站优化流程网络推广app是违法的吗
  • 移动网站建设平台工程建设网站导航图
  • 给公司建网站 深圳wordpress链接数据库失败
  • 建设网站 如何给文件命名wordpress克隆
  • 成都好的网站设计公司唐山网站网站建设