热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

树、二叉树、二叉查找树算法

总结:树:树是一种数据结构,它是由n(n1)个有限节点组成一个具有层次关系的集合。二叉树:可

总结:

树:树是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。
二叉树:可以是空集;根可以有空的左子树或右子树;或者左、右子树皆为空。
1. 完整二叉树:2{h} –1节点,h是高度
2. 满二叉树(包括完整二叉树):两层结点的度可以小于2,并且最下一层的叶结点集中在靠左的若干位置上
3. 二叉查找树&#xff1a;左子树节点值<它的根节点值<右子树节点值&#xff08;如果节点不为空&#xff09;。


二叉查找树&#xff08;http://www.cnblogs.com/skywang12345/p/3576328.html&#xff09;

树定义

这里写图片描述
把它叫做“树”是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。它具有以下的特点&#xff1a;
(01) 每个节点有零个或多个子节点&#xff1b;
(02) 没有父节点的节点称为根节点&#xff1b;
(03) 每一个非根节点有且只有一个父节点&#xff1b;
(04) 除了根节点外&#xff0c;每个子节点可以分为多个不相交的子树。

树 术语

若一个结点有子树&#xff0c;那么该结点称为子树根的”双亲”&#xff0c;子树的根是该结点的”孩子”。有相同双亲的结点互为”兄弟”。一个结点的所有子树上的任何结点都是该结点的后裔。从根结点到某个结点的路径上的所有结点都是该结点的祖先。

结点的度&#xff1a;结点拥有的子树的数目。
叶子&#xff1a;度为零的结点。
分支结点&#xff1a;度不为零的结点。
树的度&#xff1a;树中结点的最大的度。
层次&#xff1a;根结点的层次为1&#xff0c;其余结点的层次等于该结点的双亲结点的层次加1。
树的高度&#xff1a;树中结点的最大层次。
无序树&#xff1a;如果树中结点的各子树之间的次序是不重要的&#xff0c;可以交换位置。
有序树&#xff1a;如果树中结点的各子树之间的次序是重要的, 不可以交换位置。
森林&#xff1a;0个或多个不相交的树组成。对森林加上一个根&#xff0c;森林即成为树&#xff1b;删去根&#xff0c;树即成为森林。

二叉树的定义

二叉树是每个节点最多有两个子树的树结构。它有五种基本形态&#xff1a;二叉树可以是空集&#xff1b;根可以有空的左子树或右子树&#xff1b;或者左、右子树皆为空。
这里写图片描述

二叉树的性质

性质1&#xff1a;二叉树第i层上的结点数目最多为 2{i-1} (i≥1)。
性质2&#xff1a;深度为k的二叉树至多有2{k}-1个结点(k≥1)。
性质3&#xff1a;包含n个结点的二叉树的高度至少为log2 (n&#43;1)。
性质4&#xff1a;在任意一棵二叉树中&#xff0c;若终端结点的个数为n0&#xff0c;度为2的结点数为n2&#xff0c;则n0&#61;n2&#43;1。

满二叉树&#xff0c;完全二叉树&#xff0c;二叉查找树

满二叉树

定义&#xff1a;高度为h&#xff0c;并且由2{h} –1个结点的二叉树&#xff0c;被称为满二叉树。

完全二叉树

定义&#xff1a;一棵二叉树中&#xff0c;只有最下面两层结点的度可以小于2&#xff0c;并且最下一层的叶结点集中在靠左的若干位置上。这样的二叉树称为完全二叉树。
特点&#xff1a;叶子结点只能出现在最下层和次下层&#xff0c;且最下层的叶子结点集中在树的左部。显然&#xff0c;一棵满二叉树必定是一棵完全二叉树&#xff0c;而完全二叉树未必是满二叉树。

二叉查找树

定义&#xff1a;二叉查找树(Binary Search Tree)&#xff0c;又被称为二叉搜索树。
(01) 若任意节点的左子树不空&#xff0c;则左子树上所有结点的值均小于它的根结点的值&#xff1b;
(02) 任意节点的右子树不空&#xff0c;则右子树上所有结点的值均大于它的根结点的值&#xff1b;
(03) 任意节点的左、右子树也分别为二叉查找树。
(04) 没有键值相等的节点&#xff08;no duplicate nodes&#xff09;。

二叉查找树

这里写图片描述
(01) 前序遍历结果&#xff1a; 3 1 2 5 4 6
(02) 中序遍历结果&#xff1a; 1 2 3 4 5 6
(03) 后序遍历结果&#xff1a; 2 1 4 6 5 3

(01) 新建”二叉查找树”root


(02) 依次插入1,5,4,3,2,6

这里写图片描述
前序遍历结果: 1 5 4 3 2 6
中序遍历结果: 1 2 3 4 5 6
后序遍历结果: 2 3 4 6 5 1
最小值是1&#xff0c;而最大值是6。

(03) 删除节点 3

这里写图片描述


推荐阅读
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • 本文介绍了一些好用的搜索引擎的替代品,包括网盘搜索工具、百度网盘搜索引擎等。同时还介绍了一些笑话大全、GIF笑话图片、动态图等资源的搜索引擎。此外,还推荐了一些迅雷快传搜索和360云盘资源搜索的网盘搜索引擎。 ... [详细]
  • 本文介绍了在无法联网的情况下,通过下载rpm包离线安装zip和unzip的方法。详细介绍了如何搜索并下载合适的rpm包,以及如何使用rpm命令进行安装。 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • Go语言实现堆排序的详细教程
    本文主要介绍了Go语言实现堆排序的详细教程,包括大根堆的定义和完全二叉树的概念。通过图解和算法描述,详细介绍了堆排序的实现过程。堆排序是一种效率很高的排序算法,时间复杂度为O(nlgn)。阅读本文大约需要15分钟。 ... [详细]
  • macOS Big Sur全新设计大版本更新,10+个值得关注的新功能
    本文介绍了Apple发布的新一代操作系统macOS Big Sur,该系统采用全新的界面设计,包括图标、应用界面、程序坞和菜单栏等方面的变化。新系统还增加了通知中心、桌面小组件、强化的Safari浏览器以及隐私保护等多项功能。文章指出,macOS Big Sur的设计与iPadOS越来越接近,结合了去年iPadOS对鼠标的完善等功能。 ... [详细]
  • 本文介绍了互联网思维中的三个段子,涵盖了餐饮行业、淘品牌和创业企业的案例。通过这些案例,探讨了互联网思维的九大分类和十九条法则。其中包括雕爷牛腩餐厅的成功经验,三只松鼠淘品牌的包装策略以及一家创业企业的销售额增长情况。这些案例展示了互联网思维在不同领域的应用和成功之道。 ... [详细]
  • 面试经验分享:华为面试四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试
    最近有朋友去华为面试,面试经历包括四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试。80%的人都在第一轮电话面试中失败,因为缺乏基础知识。面试问题涉及 ... [详细]
  • 本文介绍了某点评网的搜索策略,包括名称和地址的匹配策略,模糊匹配的方法以及不同口音和拼音的近似发音。同时提供了一些例子来说明这些策略的应用。 ... [详细]
author-avatar
走着走着就丢啦
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有