排序二叉树

排序二叉树排序二叉树一、基本概念二叉树是一种从上往下的树状结构的数据结构,从根节点开始每个节点最多有两个子节点,左边的为左子节点,右边的为右子节点。排序二叉树–有顺序,且没有重复元素的二叉树。顺序为:

大家好,又见面了,我是你们的朋友全栈君。

排序二叉树

一、基本概念

二叉树是一种从上往下的树状结构的数据结构,从根节点开始每个节点最多有两个子节点,

左边的为左子节点,右边的为右子节点。

排序二叉树–有顺序且没有重复元素的二叉树。顺序为:

对每个节点而言:

1)如果左子树不为空,则左子树上的所有节点都小于该节点;

2)如果右子树不为空,则右子树上的所有节点都大于该节点;

<span role="heading" aria-level="2">排序二叉树

如图,根节点为5,左边的节点都大于5,右边的节点都小于5。

二、基本算法

1.查找

1)首先与根节点比较,相同则找到;

2)如果小于根节点,则到左子树种递归查找;

3)如果大于根节点,则到右子树中递归查找;

这个步骤与在数组中进行二分查找是类似的。此外,在排序二叉树中查找最大值和最小值很简单。

2.遍历

排序二叉树可以方便的按序遍历,用递归的方式。

如下图的例子,先访问根节点的左子树,一直到最左边的节点–1,1没有右子树

,返回上一层,访问3,然后访问3的右子树,4没有左子树,所以访问4,然后4的右

子树6,以此类推。1–3–4–6–7–8–9

<span role="heading" aria-level="2">排序二叉树

 

 不用递归的方式,也可以实现按序遍历:第一个节点为最左边的节点,从第一个

节点开始,依次找后继节点,找其后继节点的算法为:

1)如果该节点有右子节点,则后继节点为右子树中的最小节点;

2)如果该节点无右子节点,则后继节点为父节点或者某个祖先节点,

从当前节点往上找,如果它是父节点的右孩子,则继续找父节点,直到

它不是右孩子或父节点为空,第一个非右孩子节点的父节点就是后继节点,

如果找不到这样的祖先节点,则后继为空,遍历结束。

3.插入

在排序二叉树中,插入元素首先要找插入位置,即新节点的父节点。

与查找元素类似从根节点开始找:

1)与当前节点相同,则已经存在了,不能插入;

2)如果小于当前节点,则到左子树中查找,如果左子树为空,则当前节点为要找到的父节点;

3)如果大于当前节点则到右子树中查找,如果右子树为空,则当前节点为要找的父节点。

 3.删除

从排序二叉树中删除一个节点,主要有三种情况:

1)节点为叶子节点: 直接删除

2)节点只有一个孩子节点:

删除当前节点,让其子节点与父节点建立链接。

 <span role="heading" aria-level="2">排序二叉树

3)节点有两个孩子节点:

<span role="heading" aria-level="2">排序二叉树

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154662.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mybatis-plus超详细讲解[通俗易懂]

    mybatis-plus超详细讲解[通俗易懂]mybatis-puls超详细讲解本文笔记都是观看狂神老师视频手敲的,敲完的时候发现一件挺奔溃的事,视频地址:https://www.bilibili.com/video/BV17E411N7KN视频地址这个老师讲课真的很好,学java后端的都可以去看一下,从基础到架构很详细,推荐给大家https://space.bilibili.com/95256449/狂神说最近做项目听到老师讲到使用…

    2022年5月5日
    44
  • 数据库的增删改查和使用流程

    数据库的增删改查和使用流程

    2021年12月8日
    52
  • JAVA XML转对象 对象转XML

    JAVA XML转对象 对象转XML在网上看了许多XML跟Obj互相转换的Demo,但是都很复杂,现在推荐一个极度简单好理解的XML和Obj互转的例子:JacksonXML,只需要简单的几个注解就能完成XML和Obj的相互转换假设有如下xml报文:<?xmlversion=”1.0″encoding=”utf-8″?><msgbody><StringList>&…

    2022年7月21日
    16
  • hesse矩阵和jacobi矩阵_安索夫矩阵和波士顿矩阵区别

    hesse矩阵和jacobi矩阵_安索夫矩阵和波士顿矩阵区别转载自:http://jacoxu.com/jacobian%E7%9F%A9%E9%98%B5%E5%92%8Chessian%E7%9F%A9%E9%98%B5/在网上看到的一篇不错的关于雅克比

    2022年8月3日
    7
  • matlab资产组合最优配置_最优投资组合怎么确定

    matlab资产组合最优配置_最优投资组合怎么确定您所在位置:网站首页>海量文档&nbsp>&nbsp计算机&nbsp>&nbspmatlab基于MATLAB的最优投资组合问题.pdf3页本文档一共被下载:次,您可全文免费在线阅读后下载本文档。下载提示1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。2.该文档所得收…

    2025年7月11日
    4
  • Linux安装mysql5.7.26 –(傻瓜版3分钟搞定)

    Linux安装mysql5.7.26 –(傻瓜版3分钟搞定)前言在这之前的一天时间里,我全网搜mysql的各种安装方式,还有版本不同带来的问题,会发现在Mac或者在linux上安装5.7一下版本时,出现的问题会少很多,尤其是拿着dmg文件在Mac安装就是1分钟的事,但是在linux安装5.7时出现了不少的问题,出现的问题各式各样,大家安装时碰到问题了,一定要找你当前版本下的解决方式。严格按照本文步骤可以顺利安装,这也是我连续在三…

    2022年6月5日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号