专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

Java二叉树查询原理深入分析讲解

  二叉查询树
  概述
  二叉树(Binarytree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树特点是每个节点最多只能有两棵子树,且有左右之分
  特点
  树同时具有数组查询的效率、链表增删、改的性能
  右子树的结点比左子树的节点大
  查找法
  搜索的数字如果比节点大则往右搜索,搜索的数字如果比节点小则往左搜索结点实现原理
  插入实现原理
  int〔〕arrs{5,2,1,4,3,9,7,6,8};如果树是空树,插入节点就直接放入到根结点如果树不是空树,则插入的数字于根结点的数字进行比较如果插入的值小于于结点的数字,则往左子树插入如果左子结点没有元素就插入到左子结点中如果左子结点有元素,就可以设计一个引用(游标)指向左子节点,并且再次和待插入的执行左子结点进行比较,直到找到插入的位置如果插入的值大于结点的数字,则往右子树插入判断右子结点是否存在值,如果不存在则直接插入判断右子结点是否存在值,如果存在则通过一个引用指向右子结点继续和待插入的值进行比较,直到找到插入的位置
  总结:
  小往左,大往右
  左子数永远小于右子树
  遍历实现原理
  中序遍历:左根右
  通过中序遍历就可以将二叉树查找树的进行顺序输出
  总结:
  始终贯彻左根右的原则、由内层向外层拆分
  int〔〕arrs{1,2,3,4,5,6,7,8,9};删除实现原理
  提供一个待删除的结点的值,根据值从二叉查找树找到需要删除的结点
  找到待删除结点的父类结点,并且要根据待删除结点在父类结点的左右子树的位置,设置为null进行删除
  需要考虑结点的三种情况
  情况1:待删除的结点没有子结点
  直接让父类结点的对应目标结点引用设置为null即可
  情况2:待删除的结点有一个子节点
  将待删除的父类结点对应子节点的引用指向待删除结点的子节点
  情况3:待删除的结点有两个子节点从左子树中找到最大的结点进行删除,并且将最大的结点的值放入到待删除结点从右子树中找到最小的结点进行删除,并且将最小的结点的值放入(替换)到待删除结点
  (上述两种删除方法:需要将待删除结点指向新创建(替换后的)的结点,并且将新的结点(替换后的)的左右结点指向待删除的左右子树的结点)
  删除的结点是根节点的情况情况1:根节点没有子节点,直接将根结点指向null情况2:根结点有一个子节点,则根结点直接指向子节点情况3:根结点有两个子节点
  可以从左子树中找到最大值删除结点,然后将最大值覆盖(替换)根节点
  可以从右子树中找到最小值删除结点,然后将最小值覆盖(替换)根节点
  结点插入与遍历案例BinarySearchTree类
  packageAlgorithm;publicclassBinarySearchTree{Noderoot;定义根节点结点插入方法publicvoidinsert(intvalue){if(rootnull){1。如果树是空树,插入节点就直接放入到根结点rootnewNode(value);}else{如果树不是空树,则插入的数字于根结点的数字进行比较2。如果插入的值小于于结点的数字,则往左子树插入Nodenoderoot;声明一个游标结点,开始指向根节点while(true){并且再次和待插入的执行左子结点进行比较,直到找到插入的位置if(valuenode。value){如果插入的值小于于结点的数字,则往左子树插入2。1如果左子结点没有元素就插入到左子结点中if(node。leftnull){node。leftnewNode(value);break;如果找到插入的位置,则跳出while循环}else{如果左子结点有元素,就可以设计一个引用(游标)指向左子节点,并且再次和待插入的执行左子结点进行比较,直到找到插入的位置游标指向左子节点nodenode。left;}}else{如果插入的值大于结点的数字,则往右子树插入判断右子结点是否存在值,如果不存在则直接插入if(node。rightnull){node。rightnewNode(value);break;}else{判断右子结点是否存在值,如果存在则通过一个引用指向右子结点继续和待插入的值进行比较,直到找到插入的位置游标指向右子节点nodenode。right;}}}}}定义左右结点常量publicstaticfinalintLEFT0;左子节点publicstaticfinalintRIGHT1;右子节点结点查找方法publicvoiddeleteNode(intvalue){定义游标从根节点开始查询Nodenoderoot;定义目标结点Nodetargetnull;定义目标结点的父类结点Nodeparentnull;目标结点的类型为,左子节点或者右子节点intnodeType0;0代表左子节点1代表右子节点while(node!null){游标不为空,如果为空则没有子节点,无法删除if(node。valuevalue){如果目标结点的值和需要删除结点的值相同找到结点targetnode;break;}elseif(valuenode。value){如果值不同,则判断目标结点值是否小于node结点保存父类结点parentnode;游标指向左子节点nodenode。left;nodeTypeLEFT;}else{如果值不同,且目标结点值大于node结点保存父类结点parentnode;游标指向右子节点nodenode。right;nodeTypeRIGHT;}}如果没找到需要删除的目标结点if(targetnull){System。out。println(没有找到要删除的结点);return;}删除结点的三种情况if(target。leftnulltarget。rightnull){情况1:待删除的结点没有子结点if(parentnull){删除的结点没有子结点将root设置为null即可rootnull;return;}判断目标的结点是左子节点还是右子节点if(nodeTypeLEFT){将父类的左子节点设置为nullparent。leftnull;}else{将父类的右子节点设置为nullparent。rightnull;}}elseif(target。left!nulltarget。right!null){情况2:待删除的结点有2个子节点两个子节点,从target右子树查找最小的值Nodemintarget。right;遍历左子树while(min。left!null){minmin。left;}将最小的结点进行删除deleteNode(min。value);将待删除的结点替换成最小的结点的值target。valuemin。value;}else{情况3:待删除的结点有1个子节点删除结点是根节点if(parentnull){if(target。left!null){判断是左子节点还是右子节点有值roottarget。left;根节点目标左子结点}else{roottarget。right;根节点目标右子结点}}只有一个子节点if(nodeTypeLEFT){如果是左子节点if(target。left!null){将父类的左子节点,指向待删除结点的左子节点parent。lefttarget。left;}else{如果是右子节点将父类的左子节点,指向待删除结点的右子节点parent。lefttarget。right;}}else{if(target。right!null){将父类的右子节点,指向待删除结点的左子节点parent。righttarget。left;}else{如果是右子节点将父类的右子节点,指向待删除结点的右子节点parent。righttarget。right;}}}}实现中序遍历publicvoidmidTraversal(Nodenode){if(nodenull){进行判断结点不能为空,如果为空则退出return;}else{如果结点不为null,则执行下列遍历语句首先,遍历左节点midTraversal(node。left);打印根节点System。out。print(node。value,);最后遍历右子结点midTraversal(node。right);}}创建一个结点类publicstaticclassNode{intvalue;存储值Nodeleft;左子树Noderight;右子树带参构造方法,传入value赋值publicNode(intvalue){this。valuevalue;}}}TestBST测试类packageAlgorithm;publicclassTestBST{publicstaticvoidmain(String〔〕args){int〔〕arrs{5,2,1,4,3,9,7,6,8};创建二叉查询树BinarySearchTreetreenewBinarySearchTree();将数组中的元素构造成二叉查询树for(inti0;iarrs。length;i){tree。insert(arrs〔i〕);}删除结点tree。deleteNode(20);中序遍历根结点tree。midTraversal(tree。root);}}

李世民杀了弟弟李元吉,却又纳他老婆为妻,这是为何?李世民杀了弟弟李元吉,却又纳他老婆为妻,这是为何?玄武门之变是发生在我国唐朝时期的一件大事,正因为玄武门事变的发生,才使得唐朝的进展步入到了一个全新的层次,而玄武门之变的策划者就是秦始皇还有后人存世吗?这4个姓氏的人,极有可能就是始皇的子孙文夜谈编辑古往奇事说秦始皇还有后人存世吗?这4个姓氏的人,极有可能就是始皇的子孙!有一句诗说得好惜秦皇汉武,略输文采。作为中国历史上最出名的皇帝,应该没有之一,秦始皇最大的问题就是满清入关之后,明朝的那二十多万宗室子弟下场如何?前言明太祖朱元璋从小过惯了苦日子,唯恐自己的子孙饿了肚子,给子孙们定下了铁律,宗室子弟既不需要从商,也不需要种地,从10岁开始由朝廷恩养,直到去世。许多宗室子弟为了创收,不断生孩子朱元璋夜访道观,女道士主动要求侍奉!第二日冷笑立刻杀了她公元1368年朱元璋建立大明,古人讲究的是衣锦还乡,光宗耀祖,朱元璋得了天下是一定要回老家省亲的。第二年他便率领几个近亲大臣,以及一些大内侍卫从南京出发,去往凤阳府。话说朱元璋一行王者的独白朱厚照他是大明帝国历史上最叛逆的皇帝,同时也是最快乐的皇帝。明武宗朱厚照作为明朝历史上第十位皇帝,留下了许多奇葩故事。朱厚照画像作为孝宗皇帝朱祐樘和皇后张氏的独子,父母恩爱,只有他一个儿秦二世灭亡的根本原因,并非源于陈胜吴广,而是不容小觑的他们暴政必然导致灭亡,但是从历史上看,却不必然会使一个王朝短暂而亡。那么导致秦二世而亡的根本原因是什么,则成为需要回答的重要问题。从秦末农民起义的领导者来看,刘邦陈胜等属于底层从数量来1965年,陈诚在临终前留下遗言,妻子知道后脸色大变,这是为何?如果您喜欢这篇文章,请点击右上方的关注。感谢您的支持和鼓励,希望能给您带来舒适的阅读体验。1965年3月,时年68岁的陈诚虚弱地躺在病床上。作为蒋介石的得力干将,久经病痛折磨的陈诚人伦悲剧朱瞻基一天诛杀九位藩王众所周知明太祖朱元璋在历史上留下了残暴的恶名,主要是因为他为了巩固统治诛杀功臣,基本上将追随自己的功臣一网打尽,满门灭绝。其子朱棣也留下残暴的恶名,靖难之役后屠杀建文旧臣以及后宫等刘备不愧是一代枭雄,一生不用赵云,临终前才告诉赵云真相三国的将领中最风流倜傥的,除了吴国大都督周公瑾之外,就是蜀国的大将赵云了。他一袭白衣,在血雨纷纷的战场上留下了诸多的功绩。然而,他即便是有众多功绩加身,却并不得刘备的重用。要知道,由刘邦带起的家族荣耀刘氏皇族,整体命运的起承转合刘氏皇族的不断繁衍,皇帝的代代更替,造就了一批批外戚家族。外戚与皇族有联合也有斗争,在皇权的扶持或打压下沉浮。西汉末年因刘氏皇族的衰亡,王氏家族的强盛,最终王氏取代刘氏建立了新朝。溯源成吉思汗与努尔哈赤的祖先,2700年前两人是否共祖?近段时间,由于春节档电影满江红的热播,导致很多人对宋金辽那段时间的历史感兴趣了起来。有些人在对金朝义愤填膺满腔怒火之时,突然发现自己所处省份竟然是被金朝所管辖,岳飞打的就是自己,不
69北京时间6月30日中国男篮世预赛B组首轮迎战澳大利亚男篮,相信球员都已经做好面对困难的准备,期待他们能有更好的发挥争取胜利。中国男篮首发阵容周琦郭艾伦胡明轩赵继伟沈梓捷。上半场比赛相近相亲携手同行新华社澳门6月29日电题相近相亲携手同行澳门各界祝福香港回归祖国25周年新华社记者刘刚李寒芳入夜,澳门街头的户外大电视屏亮了起来,巨幅字幕祝福香港明天更好映入眼帘。在香港回归祖国2别拿婚闹当闹喜好家伙,我直呼好家伙。赵丽颖新剧,开局就结婚。初看,好像没什么大问题,婆婆体贴。婚礼现场,一边忙得脚不沾地,一边还惦记着,怕儿媳妇饿肚子。可是,同样是她在吉时已到时又叫停,理由居然万亿上市银行行长辞职!股价巨震,去向成谜时隔两月,资产规模达1。88万亿的南京银行,披露的一则公告再次打破了银行股的平静。行长突然辞职6月29日晚间,南京银行公告,公司董事行长林静然因工作需要另有任用,于当日向公司董事会中国连抛775亿美债后,买进1677万吨美大豆,美农民希望买更多一直叫嚣着要对华脱钩的美国,最终没能摆脱对中国商品的依赖,在其连连出手之下,中国对美出口依然保持了高速增长,如今不光美国民众希望购买更多的中国商品,美国的农民也希望将更多的农产品出印媒比中国福建舰航母更强,印度新国产航母已准备就绪8月入役看着我国的福建舰航母下水之后,印度也不甘落后,开始大量报道自家的维克兰特号航母的情况,前几天的国际瑜伽日上,还让几百名海军士兵在这艘航母上表演了一次航母瑜伽,现在这些印媒又开始大量世预赛,周琦两双,顾全4记三分,中国男篮惜败澳大利亚北京时间6月30日16时35分,中国男篮迎来世预赛第三阶段首场比赛,对手是实力强劲的澳大利亚,此役杜锋派出周琦郭艾伦赵继伟沈梓捷胡明轩首发,经过四节激烈比拼,最终中国男篮惜败对手无搬出2万平礼宾府,退休后林郑准备在这租房住今年是香港回归25周年,最近香港都在忙着庆祝。而今天(6月30日)是林郑月娥卸任特首的日子,她需要从礼宾府搬出。全港网友都在关心,搬出礼宾府后,她会住哪?因为之前和大家讲过,林郑月官媒曝运在我国福建号航母下水之前,与之配套的多款舰载机就已经启动了研发工作,目前舰上的弹射型歼15B舰载机歼35隐身战斗机歼15D舰载电子战机空警600舰载预警机直20通用直升机攻击11无3月思想汇报作者张紫欣共青团作为共产党的后备主力军,有着不可替代的作用。作为共青团中的一员,我时刻不忘团员的职责,严格遵守团员的守则,牢记团员是党的后备军,应该继承党的先进性,应该拥有高尚的人韩媒韩外长7月出访新印两国并将出席G20外长会据韩联社首尔报道,韩国外交部30日表示,外交部长官朴振将于下月访问新加坡,之后飞赴印尼巴厘岛出席二十国集团(G20)外长会。报道称,这将是朴振就职以来首次出访东盟国家。朴振将于7月
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网