• 树的概念
  • 二叉树的概念

树的概念和结构

树是一种非线性的数据结构,它是由n个有限结点组成一个具有层次关系的集合,把它叫做树是因为它看起来像一棵倒挂的树,如图所示

  1. 有一个特殊的结点,称为根节点,根节点没有前驱结点
  2. 除根节点外,其余结点被分成M个互不相交的集合T1、T2、、、、、Tm, 其中每一个集合Ti又是一棵结构与树类似的子树。每棵子树的根节点有且只有一个前驱,可以有0个或多个后驱结点
  3. 子树是不相交的
  4. 除了根节点外,每个节点有且仅有一个父节点
  5. 一棵N个节点的树有N-1条边


6. 节点的度:一个节点含有的子树的个数称为该节点的度,如节点D的度为2
7. 叶子节点:度为零的结点为叶子节点,如上图所有#
8. 父节点:如果一个节点含有子节点,则称这个节点为父节点,如C是E和#的父节点
9. 子节点:如果一个结点含有的子树的根节点称为该节点的子节点,如A的子节点是B,C
10. 兄弟节点:具有相同的父节点的结点互称为兄弟节点,如B,C是兄弟节点
11. 树的度:树所包含的节点中,拥有最大的分支的数目为该树的度。上图是个二叉树度为2
12. 树的深度(高度):树中节点的最大层次


二叉树的概念和结构

二叉树是最常使用的树,特点是 :

  1. 每个节点最多有两棵子树,即二叉树不存在度大于2的节点
  2. 二叉树的子树有左右之分,其子树的次序不能颠倒

特殊的二叉树

满二叉树

一个二叉树,如果每一层的节点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且节点总数为(2^k)-1,则就是满二叉树

完全二叉树

满二叉树是一种特殊的完全二叉树,对于深度为k的,有n个节点的二叉树,当且仅当每一个节点都与深度为K的满二叉树中编号1~n的结点一一对应时称为完全二叉树


有一个很好的区分它们的方法,满二叉树是除叶子节点外所有节点都存在左右子树的一棵树,而完全二叉树则是所有节点都是连续的,不存在有右子树而没有左子树的情况

二叉树的性质

  1. 一棵非空二叉树上的第i层最多有2^(i - 1)个节点(层数从1开始)
  2. 深度为h的二叉树的最大节点数为2^n - 1个
  3. 如果叶子节点的个数为n0,度为2的结点的个数为n2,则有 n0 = n2 + 1
  4. 具有n个节点的完全二叉树的深度为h = log2(n) + 1
  5. 如果一个结点的编号为i(从0开始),那么他的左孩子编号为2i +1,右孩子编号为2i +2,他的父节点为(i - 1) / 2

数据结构与算法 | 树与二叉树相关推荐

  1. 数据结构与算法——树和二叉树***

    第五章 :树和二叉树 树和图是两种重要的非线性结构.线性结构中结点具有唯一前驱和唯一后继的关系,而非线性结构中结点之间的关系不再具有这种唯一性.其中,树形结构中结点间的关系是前驱唯一而后继不唯一,即元 ...

  2. Python__数据结构与算法——树、二叉树(实现先、中、后序遍历)

    目录 一.树 二.二叉树 树和前面所讲的表.堆栈和队列等这些线性数据结构不同,树不是线性的.在处理较多数据时,使用线性结构较慢,而使用树结构则可以提高处理速度.不过,相对于线性的表.堆栈和队列等线性数 ...

  3. 数据结构与算法——树与二叉树详细分享

    一.树 1.定义:由n个有限节点组成一个具有层次关系的集合,看起来像一颗倒挂的树,特点: 2.特点: a.每个节点有0个或多个子节点 b.没有父节点的节点称为根节点(A) c.每一个非根节点有且只有一 ...

  4. 数据结构与算法:树 二叉树入门(一)

    Tips: 采用java语言,关注博主,底部附有完整代码 工具:IDEA 本系列介绍的是数据结构: 树 这是第1篇目前计划一共有12篇: 二叉树入门 本篇 顺序二叉树 线索化二叉树 堆排序 赫夫曼树( ...

  5. 数据结构与算法--死磕二叉树

    死磕二叉树 近一年都比较关注算法相关的知识,也刷了不少题,之前的文章中大多也是算法相关的文章,但是感觉每次遇到树相关的题型都不能应对自如,因此还是有必要在相关知识上下功夫,因此有此次总结,以下是所有树 ...

  6. 【数据结构Note5】- 树和二叉树(知识点超细大全-涵盖常见算法 排序二叉树 线索二叉树 平衡二叉树 哈夫曼树)

    文章目录 5.1 树和二叉树引入 5.1.1 树的概念 5.1.2 树的表示 5.1.3 树中基本术语 5.2 二叉树 5.2.1 概念 5.2.2 二叉树的性质 5.2.3 特殊的二叉树 5.2.4 ...

  7. Java数据结构与算法——树(基本概念,很重要)

    声明:码字不易,转载请注明出处,欢迎文章下方讨论交流. 有网友私信我,期待我的下一篇数据结构.非常荣幸文章被认可,也非常感谢你们的监督. 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督 ...

  8. 数据结构与算法-- 广度优先打印二叉树

    广度优先打印二叉树 题目:从上往下打印出二叉树的每一个节点,同一层节点按照从左到右顺序打印,例如下图中二叉树,依次打印出是8,6,10,5,7,9,11 如上题中二叉树的节点定义我们用之前文章 二叉树 ...

  9. 数据结构实验二 树和二叉树的实现

    广州大学学生实验报告 开课实验室:计算机科学与工程实验(电子楼418A)     2019年5月13日 学院 计算机科学与教育软件学院 年级.专业.班 计算机科学与技术172班 姓名 学号 17061 ...

最新文章

  1. HDU5692(线段树+dfs序)
  2. 小米澄清传闻:不存在跨境转移利润及逃避缴纳税款行为
  3. Spring IOC 容器源码分析 - 获取单例 bean
  4. hdu 3033(分组背包)
  5. [分享]Host文件的原理解释及应用说明
  6. Log4J入门教程(二) 参数讲解
  7. servlet设置cookie实验
  8. ES6-weakset集合
  9. qq邮箱html模板_用了这么多简历模板,发现只有QQ邮箱自带的模板最好用
  10. L3-009 长城 (30 分)-PAT 团体程序设计天梯赛 GPLT
  11. Android系统启动-SystemServer下篇
  12. 专题一:MATLAB基础知识
  13. unity 视频播放器没有声音
  14. oracle重做日志详解,oracle数据文件、控制文件、重做日志文件详解
  15. 大促活动如何抵御大流量 DDoS 攻击?
  16. FX5U数据包功能码
  17. MYSQL基础之浅聊 变量
  18. GitHub 值得收藏的前端项目
  19. iphone11 sim卡故障_iPhone11.3更新后如何解决手机卡顿问题?
  20. 圆形头像 android,android 一个简单的实现圆形头像的Demo

热门文章

  1. ActiveMQ专题
  2. mysql命令导出表结构文件夹_mysql,命令导入\导出表结构或数据
  3. python的f-string 格式化字符串
  4. mysql5.7 solo web服务器
  5. javascript之闭包深入理解(一)
  6. 《3D数学基础》实践1 向量类代码分析
  7. 控制台 - 网络管理之华为交换机 S系列端口限速
  8. 批量调整word表格根据窗口调整内容
  9. AIX性能管理指南-luoqiangb@dc
  10. 整理你的个人IT资料库