宁夏建设投资集团公司网站哪家网站开发公司好

pingmian/2025/10/10 20:51:42/文章来源:
宁夏建设投资集团公司网站,哪家网站开发公司好,北京网站建设排行榜,如何给喜欢的明星做网站AVL树----java AVL树是高度平衡的二叉查找树 1.单旋转LL旋转 理解记忆#xff1a;1.在不平衡的节点的左孩子的左孩子插入导致的不平衡#xff0c;所以叫LL private AVLTreeNodeT leftLeftRotation(AVLTreeNodeT k2) {AVLTreeNodeT k1;k1 k2.left;k2…                                                                                     AVL树----java AVL树是高度平衡的二叉查找树 1.单旋转LL旋转 理解记忆1.在不平衡的节点的左孩子的左孩子插入导致的不平衡所以叫LL private AVLTreeNodeT leftLeftRotation(AVLTreeNodeT k2) {AVLTreeNodeT k1;k1 k2.left;k2.left k1.right;k1.right k2;k2.height max( height(k2.left), height(k2.right)) 1;k1.height max( height(k1.left), k2.height) 1;return k1; }2.单旋转RR 理解记忆1.不平衡节点的右孩子的有孩子插入导致的不平衡所以叫RR private AVLTreeNodeT rightRightRotation(AVLTreeNodeT k1) {AVLTreeNodeT k2;k2 k1.right;k1.right k2.left;k2.left k1;k1.height max( height(k1.left), height(k1.right)) 1;k2.height max( height(k2.right), k1.height) 1;return k2; }3.双旋转LR 理解记忆1.不平衡节点的左孩子的有孩子导致的不平衡所以叫LR                      2.须要先对k1  RR,再对根K3  LL private AVLTreeNodeT leftRightRotation(AVLTreeNodeT k3) {k3.left rightRightRotation(k3.left);return leftLeftRotation(k3); } 4.双旋转RL 理解记忆1.不平衡节点的右孩子的左孩子导致的不平衡所以叫RL                      2.须要先对k3 LL,在对k1 RR private AVLTreeNodeT rightLeftRotation(AVLTreeNodeT k1) {k1.right leftLeftRotation(k1.right);return rightRightRotation(k1); }5.AVL的样例 遍历查找等和二叉查找树一样就不在列出主要是 插入 和  删除 public class AVLTreeT extends ComparableT {private AVLTreeNodeT mRoot; // 根结点// AVL树的节点(内部类)class AVLTreeNodeT extends ComparableT {T key; // keyword(键值)int height; // 高度AVLTreeNodeT left; // 左孩子AVLTreeNodeT right; // 右孩子public AVLTreeNode(T key, AVLTreeNodeT left, AVLTreeNodeT right) {this.key key;this.left left;this.right right;this.height 0;}}// 构造函数public AVLTree() {mRoot null;}/** 获取树的高度*/private int height(AVLTreeNodeT tree) {if (tree ! null)return tree.height;return 0;}public int height() {return height(mRoot);}/** 比較两个值的大小*/private int max(int a, int b) {return ab ? a : b;}/** 前序遍历AVL树*/private void preOrder(AVLTreeNodeT tree) {if(tree ! null) {System.out.print(tree.key );preOrder(tree.left);preOrder(tree.right);}}public void preOrder() {preOrder(mRoot);}/** 中序遍历AVL树*/private void inOrder(AVLTreeNodeT tree) {if(tree ! null){inOrder(tree.left);System.out.print(tree.key );inOrder(tree.right);}}public void inOrder() {inOrder(mRoot);}/** 后序遍历AVL树*/private void postOrder(AVLTreeNodeT tree) {if(tree ! null) {postOrder(tree.left);postOrder(tree.right);System.out.print(tree.key );}}public void postOrder() {postOrder(mRoot);}/** (递归实现)查找AVL树x中键值为key的节点*/private AVLTreeNodeT search(AVLTreeNodeT x, T key) {if (xnull)return x;int cmp key.compareTo(x.key);if (cmp 0)return search(x.left, key);else if (cmp 0)return search(x.right, key);elsereturn x;}public AVLTreeNodeT search(T key) {return search(mRoot, key);}/** (非递归实现)查找AVL树x中键值为key的节点*/private AVLTreeNodeT iterativeSearch(AVLTreeNodeT x, T key) {while (x!null) {int cmp key.compareTo(x.key);if (cmp 0)x x.left;else if (cmp 0)x x.right;elsereturn x;}return x;}public AVLTreeNodeT iterativeSearch(T key) {return iterativeSearch(mRoot, key);}/* * 查找最小结点返回tree为根结点的AVL树的最小结点。*/private AVLTreeNodeT minimum(AVLTreeNodeT tree) {if (tree null)return null;while(tree.left ! null)tree tree.left;return tree;}public T minimum() {AVLTreeNodeT p minimum(mRoot);if (p ! null)return p.key;return null;}/* * 查找最大结点返回tree为根结点的AVL树的最大结点。*/private AVLTreeNodeT maximum(AVLTreeNodeT tree) {if (tree null)return null;while(tree.right ! null)tree tree.right;return tree;}public T maximum() {AVLTreeNodeT p maximum(mRoot);if (p ! null)return p.key;return null;}/** LL左左相应的情况(左单旋转)。** 返回值旋转后的根节点*/private AVLTreeNodeT leftLeftRotation(AVLTreeNodeT k2) {AVLTreeNodeT k1;k1 k2.left;k2.left k1.right;k1.right k2;k2.height max( height(k2.left), height(k2.right)) 1;k1.height max( height(k1.left), k2.height) 1;return k1;}/** RR右右相应的情况(右单旋转)。** 返回值旋转后的根节点*/private AVLTreeNodeT rightRightRotation(AVLTreeNodeT k1) {AVLTreeNodeT k2;k2 k1.right;k1.right k2.left;k2.left k1;k1.height max( height(k1.left), height(k1.right)) 1;k2.height max( height(k2.right), k1.height) 1;return k2;}/** LR左右相应的情况(左双旋转)。** 返回值旋转后的根节点*/private AVLTreeNodeT leftRightRotation(AVLTreeNodeT k3) {k3.left rightRightRotation(k3.left);return leftLeftRotation(k3);}/** RL右左相应的情况(右双旋转)。** 返回值旋转后的根节点*/private AVLTreeNodeT rightLeftRotation(AVLTreeNodeT k1) {k1.right leftLeftRotation(k1.right);return rightRightRotation(k1);}/* * 将结点插入到AVL树中并返回根节点** 參数说明* tree AVL树的根结点* key 插入的结点的键值* 返回值* 根节点*/private AVLTreeNodeT insert(AVLTreeNodeT tree, T key) {if (tree null) {// 新建节点tree new AVLTreeNodeT(key, null, null);if (treenull) {System.out.println(ERROR: create avltree node failed!);return null;}} else {int cmp key.compareTo(tree.key);if (cmp 0) { // 应该将key插入到tree的左子树的情况tree.left insert(tree.left, key);// 插入节点后若AVL树失去平衡则进行相应的调节。if (height(tree.left) - height(tree.right) 2) {if (key.compareTo(tree.left.key) 0)tree leftLeftRotation(tree);elsetree leftRightRotation(tree);}} else if (cmp 0) { // 应该将key插入到tree的右子树的情况tree.right insert(tree.right, key);// 插入节点后若AVL树失去平衡则进行相应的调节。if (height(tree.right) - height(tree.left) 2) {if (key.compareTo(tree.right.key) 0)tree rightRightRotation(tree);elsetree rightLeftRotation(tree);}} else { // cmp0System.out.println(加入失败不同意加入同样的节点);}}tree.height max( height(tree.left), height(tree.right)) 1;return tree;}public void insert(T key) {mRoot insert(mRoot, key);}/* * 删除结点(z)返回根节点** 參数说明* tree AVL树的根结点* z 待删除的结点* 返回值* 根节点*/private AVLTreeNodeT remove(AVLTreeNodeT tree, AVLTreeNodeT z) {// 根为空 或者 没有要删除的节点直接返回null。if (treenull || znull)return null;int cmp z.key.compareTo(tree.key);if (cmp 0) { // 待删除的节点在tree的左子树中tree.left remove(tree.left, z);// 删除节点后若AVL树失去平衡则进行相应的调节。if (height(tree.right) - height(tree.left) 2) {AVLTreeNodeT r tree.right;if (height(r.left) height(r.right))tree rightLeftRotation(tree);elsetree rightRightRotation(tree);}} else if (cmp 0) { // 待删除的节点在tree的右子树中tree.right remove(tree.right, z);// 删除节点后若AVL树失去平衡则进行相应的调节。if (height(tree.left) - height(tree.right) 2) {AVLTreeNodeT l tree.left;if (height(l.right) height(l.left))tree leftRightRotation(tree);elsetree leftLeftRotation(tree);}} else { // tree是相应要删除的节点。// tree的左右孩子都非空if ((tree.left!null) (tree.right!null)) {if (height(tree.left) height(tree.right)) {// 假设tree的左子树比右子树高// 则(01)找出tree的左子树中的最大节点// (02)将该最大节点的值赋值给tree。// (03)删除该最大节点。// 这相似于用tree的左子树中最大节点做tree的替身// 採用这样的方式的优点是删除tree的左子树中最大节点之后AVL树仍然是平衡的。AVLTreeNodeT max maximum(tree.left);tree.key max.key;tree.left remove(tree.left, max);} else {// 假设tree的左子树不比右子树高(即它们相等或右子树比左子树高1)// 则(01)找出tree的右子树中的最小节点// (02)将该最小节点的值赋值给tree。// (03)删除该最小节点。// 这相似于用tree的右子树中最小节点做tree的替身// 採用这样的方式的优点是删除tree的右子树中最小节点之后AVL树仍然是平衡的。AVLTreeNodeT min maximum(tree.right);tree.key min.key;tree.right remove(tree.right, min);}} else {AVLTreeNodeT tmp tree;tree (tree.left!null) ? tree.left : tree.right;tmp null;}}return tree;}public void remove(T key) {AVLTreeNodeT z; if ((z search(mRoot, key)) ! null)mRoot remove(mRoot, z);}/* * 销毁AVL树*/private void destroy(AVLTreeNodeT tree) {if (treenull)return ;if (tree.left ! null)destroy(tree.left);if (tree.right ! null)destroy(tree.right);tree null;}public void destroy() {destroy(mRoot);}/** 打印二叉查找树** key -- 节点的键值 * direction -- 0表示该节点是根节点;* -1表示该节点是它的父结点的左孩子;* 1表示该节点是它的父结点的右孩子。*/private void print(AVLTreeNodeT tree, T key, int direction) {if(tree ! null) {if(direction0) // tree是根节点System.out.printf(%2d is root\n, tree.key, key);else // tree是分支节点System.out.printf(%2d is %2ds %6s child\n, tree.key, key, direction1?right : left);print(tree.left, tree.key, -1);print(tree.right,tree.key, 1);}}public void print() {if (mRoot ! null)print(mRoot, mRoot.key, 0);} } 文章大量參考http://www.cnblogs.com/skywang12345/p/3577479.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/88714.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

兰亭集势的网站平台建设网站建设实验的总结

网站被劫持了怎么办 建议新建一个index.html文件,文件中只写几个数字,上传到网站根目录,然后访问网站域名,看看是不是正常,从而可以确定是程序问题还是域名被劫持的问题。 如果是域名被劫持,你可以登录你…

哪个公司网站备案快win7局域网网站建设

说明 以前用过一段时间傲游浏览器,渐渐的习惯了它的鼠标手势和一些细微的人性化的功能。比方地址栏左边的“近期訪问的页面”button。能够方便的找到近期 20 条历史记录。 但后来因为某些原因又回到了 Chrome 的怀抱,于是就没有了这些不起眼但非常好用的…

asp.net 网站开发框架H5 网站

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 学习 HBase 最难的地方在于要让你的脑子真正理解它是什么。 HBase:Google BigTable 的开源实现 我们经常会把关…

91色做爰网站做框架模板的网站

《大学C语言期末考试练习题(带详解答案)》由会员分享,可在线阅读,更多相关《大学C语言期末考试练习题(带详解答案)(55页珍藏版)》请在金锄头文库上搜索。1、一、 单项选择题1( A )是构成C语言程序的基本单位。A、函数 B、过程 C、子程序 D、子例程2C语言…

在网站建设中注意的要点上海市住房和城乡建设部网站官网

MySQL中删除数据表是非常容易操作的,但是你在进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失。 语法 以下为删除 MySQL 数据表的通用语法: DROP TABLE table_name ; -- 直接删除表,不检查是否存在 或 DROP…

焊枪公司网站怎么做网站底部的图标

Hello各位小伙伴,大家新年好! 马上就要进入寒假假期了,25考研也该提上日程了。今天先跟大家分享一下大家在假期可以先做起来的准备工作。 【选择学校】 择校是个非常重要的内容,因为不同学校的考试内容是不一样的,有些…

安徽房地产网站建设百度网站是用什么软件做的

题目描述: 小明来到某学校当老师,需要将学生按考试总分或单科分数进行排名,你能帮帮他吗? 输入描述: 第1行输入两个整数,学生人数n和科目数量m。0<n<100,0<m<10 第2行输入m个科目名称,彼此之间用空格隔开。科目名称只由英文字母构成,单个长度不超过10个字符…

制作网站公司 可以要求后续修改吗代码在wordpress

在科技的浪潮中&#xff0c;Vatee万腾正展开一场引人注目的科技征途&#xff0c;以其独特的数字化力量描绘出一片新的视野。这不仅是一次技术的升级&#xff0c;更是一场对未来的全新探索&#xff0c;为我们带来了前所未有的数字化时代。 Vatee万腾以其卓越的技术实力和前瞻性的…

建设网站西安向国旗敬礼做美德少年网站

#灵感#AWB CC是图像调优中的一个重要色彩部分&#xff0c;了解一些色彩知识。 目录 1、光谱的颜色-------滤光片、颜色风格 2、人眼的明暗视觉-----------侧向光学&#xff0c;对比度、色噪 3、视觉残留-------帧率 4、颜色的明度、色调、饱和度 5、三基色 RGB---------调…

安庆信德建设咨询有限公司网站短视频培训课程

MoonBit支持native后端 Wasm-gc 后端支持 Js-string-builtins proposal 当通过编译选项 -use-js-builtin-string 开启使用 Js-string-builtins 之后&#xff0c;Moonbit 面向 wasm-gc 后端时&#xff0c;会使用 JavaScript 中的字符串类型表示 MoonBit 中的字符串&#xff0…

什么是php网站开发美橙互联网站备案

背景 常见的企业级无线接入方案有两种&#xff0c;分别被称作廋AP和胖AP。瘦AP&#xff08;ACAP&#xff09;架构为比较传统的企业级无线接入方案&#xff0c;主要优点就是漫游体验好&#xff0c;但是AC宕机的话会导致所属的AP全部无法工作。对于大型的办公场所&#xff0c;漫…

网站服务器到期查询怎么做游戏网站编辑

&#x1f3e0;关于专栏&#xff1a;Linux的浅学到熟知专栏用于记录Linux系统编程、网络编程等内容。 &#x1f3af;每天努力一点点&#xff0c;技术变化看得见 文章目录 进程程序替换什么是程序替换及其原理替换函数execlexeclpexecleexecvexecvpexecvpeexecve 替换函数总结实现…

购物网站最近浏览怎么做门户网站建设哪专业

参考链接&#xff1a; Python中的range()和xrange() 在python2 中 range(start,end,step)返回一个列表&#xff0c;返回的结果是可迭代对象&#xff0c;但不是迭代器。iter()转化为列表迭代器。xrange()返回的是一个序列&#xff0c;他也是可迭代对象&#xff0c;但不是迭代…

山东企业网站建设费用企业建设网站的功能是什么

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 秩沅 原创 &#x1f636;‍&#x1f32b;️收录于专栏&#xff1a;unity细节和bug &#x1f636;‍&#x1f32b;️优质专栏 ⭐【…

西宁市住房和城乡建设局网站怎样建立平台

Vue 和 jQuery 是两种不同类型的前端工具&#xff0c;它们有一些显著的区别&#xff1a; Vue 响应式数据绑定&#xff1a;Vue 提供了双向数据绑定和响应式更新的能力&#xff0c;使得数据与视图之间的关系更加直观和易于维护。组件化开发&#xff1a;Vue 鼓励使用组件化的方式…

做速卖通的素材有哪些网站51电子网

2024年的壁炉趋势是环保的、现代的和100%安全的&#xff0c;作为装饰性壁炉已经比取暖的壁炉更加受欢迎。现今&#xff0c;作为装饰性观赏的壁炉与为了加热取暖而开发的燃木壁炉、燃气壁炉之间存在明显区别。尽管加热取暖的壁炉在农村很有意义&#xff0c;但是装饰性壁炉在城市…

自学做视频网站网站建设课程性质

00. 目录 文章目录 00. 目录01. DMA简介02. DMA主要特性03. 存储器映像04. DMA框图05. DMA基本结构06. DMA请求07. 数据宽度与对齐08. 数据转运DMA09. ADC扫描模式DMA10. 附录 01. DMA简介 小容量产品是指闪存存储器容量在16K至32K字节之间的STM32F101xx、STM32F102xx和STM32F…

衡阳网站制作公司漯河城乡建设管理局网站

根据第 19 届 KDnuggets调查显示&#xff0c;Python 成数据分析、数据科学与机器学习的第一大语言。图片来源于第 19 届 KDnuggets软件大调查Python 在机器学习中的地位日益扩大&#xff0c;2017 年&#xff0c;机器学习中Python 的使用率超过 50%&#xff0c;今年则直接上升到…

淮安集团网站建设购物网站每个模块主要功能

目录 认识回溯思想回溯的代码框架从 N 叉树说起有的问题暴力搜索也不行回溯 递归 局部枚举 放下前任Go代码【LeetCode-77. 组合】回溯热身-再论二叉树的路径问题题目&#xff1a;二叉树的所有路径Go 代码 题目&#xff1a;路径总和 IIGo 代码 回溯是最重要的算法思想之一&am…

怎样打开网站制作盲盒小程序加盟

假如一堆数据&#xff0c;每一个数据都有一个标志位&#xff0c;按照标志位值的不同进行划分为不同的组&#xff0c;进行归类。 代码如下&#xff1a; void chunzhongForm::traverseList(winProList &dataList) {int nSize dataList.size();for(int i 0; i < nSize; …