这篇文章主要介绍“Java二叉树查询原理实例代码分析”,在日常操作中,相信很多人在Java二叉树查询原理实例代码分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java二叉树查询原理实例代码分析”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!概述二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树特点是每个节点最多只能有两棵子树,且有左右之分特点树同时具有数组查询的效率、链表增删、改的性能右子树的结点比左子树的节点大查找法搜索的数字如果比节点大则往右搜索,搜索的数字如果比节点小则往左搜索如果树是空树,插入节点就直接放入到根结点如果树不是空树,则插入的数字于根结点的数字进行比较如果插入的值小于于结点的数字,则往左子树插入如果左子结点没有元素就插入到左子结点中如果左子结点有元素,就可以设计一个引用(游标)指向左子节点,并且再次和待插入的执行左子结点进行比较,直到找到插入的位置如果插入的值大于结点的数字,则往右子树插入判断右子结点是否存在值,如果不存在则直接插入判断右子结点是否存在值,如果存在则通过一个引用指向右子结点继续和待插入的值进行比较,直到找到插入的位置总结:小往左,大往右左子数永远小于右子树中序遍历:左—根—右通过中序遍历就可以将二叉树查找树的进行顺序输出总结:始终贯彻左—根—右的原则、由内层向外层拆分提供一个待删除的结点的值,根据值从二叉查找树找到需要删除的结点找到待删除结点的父类结点,并且要根据待删除结点在父类结点的左右子树的位置,设置为null进行删除需要考虑结点的三种情况情况1:待删除的结点没有子结点直接让父类结点的对应目标结点引用设置为null即可情况2:待删除的结点有一个子节点将待删除的父类结点对应子节点的引用指向待删除结点的子节点情况3:待删除的结点有两个子节点 从左子树中找到最大的结点进行删除,并且将最大的结点的值放入到待删除结点从右子树中找到最小的结点进行删除,并且将最小的结点的值放入(替换)到待删除结点(上述两种删除方法:需要将待删除结点指向新创建(替换后的)的结点,并且将新的结点(替换后的)的左右结点指向待删除的左右子树的结点)删除的结点是根节点的情况情况1:根节点没有子节点,直接将根结点指向null情况2:根结点有一个子节点,则根结点直接指向子节点情况3:根结点有两个子节点可以从左子树中找到最大值删除结点,然后将最大值覆盖(替换)根节点可以从右子树中找到最小值删除结点,然后将最小值覆盖(替换)根节点BinarySearchTree类TestBST测试类到此,关于“Java二叉树查询原理实例代码分析”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续免费云主机域名学习更多相关知识,请继续关注百云主机网站,小编会继续努力为大家带来更多实用的文章!
本文小编为大家详细介绍“JavaScript防抖与节流如何定义使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“JavaScript防抖与节流如何定义使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。定义:对于短时间内连续触发的事…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。