树的概念
树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的

  1. 根节点:根节点没有前驱结点
  2. 除根节点外,其余结点被分成是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或者多个后继
  3. 因此,树是递归定义的
  4. 节点的度:一个节点含有的子树的个数称为该节点的度
  5. 叶节点:度为0的节点称为叶节点
  6. 非终端节点/分支节点:度不为0的节点
  7. 双亲结点/父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点
  8. 孩子节点/子节点:一个节点含有的子树的根节点称为该节点的子节点
  9. 兄弟节点:具有相同父节点的节点互称为兄弟节点
  10. 树的度:一棵树中,最大的节点的度称为树的度
  11. 节点的层次:从根开始定义起,根为第一层,根的子节点是第二层,以此类推
  12. 树的高度或深度:树中节点的最大层次
  13. 堂兄弟节点:双亲在同一层的节点互为堂兄弟
  14. 节点的祖先:从根到该节点所经分支上的所有节点
  15. 子孙:以某节点为根的子树中任一节点都称为该节点的子孙
  16. 森林:由m棵互不相交的树的集合称为森林

树的表示:
树结构相对线性表就比较复杂了,要存储表示起来就比较麻烦了,实际中树有很多表示方式,如:双亲表示法,孩子表示法,孩子兄弟表示法等等。我们这里来了解最常用的孩子兄弟表示法

typedef int DataType;
struct Node
{struct Node* firstChild1;struct Node* pNextBrother;DataType data;
};

二叉树的概念及结构
二叉树是树形结构的一个重要类型。许多实际问题抽象出来的结构往往是二叉树形式,即使是一般的树也只能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树特点是每个结点最多只能有两棵子树,且有左右之分

一棵二叉树是节点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成

二叉树的特点:

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

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

在一棵二叉树中,如果所有分支节点都存在左子树和右子树,并且所有叶节点都在同一层上,这样的一棵二叉树称作完美二叉树(满二叉树)

**完全二叉树:**完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树引出来的。对于深度为k的,有n个节点的二叉树,当且仅当其每一个节点都与深度为k的满二叉树中编号从1至n的节点–对应时称之为完全二叉树。要注意的是满二叉树是一种特殊的完全二叉树

而在一棵二叉树中,除最后一层外,若其余层都是满的,并且或者最后一层是满的,或者是在右边缺少连续若干结点,则此二叉树为完全二叉树

完全二叉树是最理想的树的结构,很容易证明有n个节点的完全二叉树的深度为O(logN)

数据结构 树和二叉树相关推荐

  1. 数据结构——树和二叉树章节思维导图

    数据结构--树和二叉树章节思维导图

  2. 数据结构-树与二叉树-思维导图+小结

    数据结构-树与二叉树-思维导图 1 数据结构-第五章-树与二叉树-思维导图 2 思维导图-补充 3 小结 3.1 知识点小结 3.2 习题小结 1 数据结构-第五章-树与二叉树-思维导图   数据结构 ...

  3. 王道——数据结构——树与二叉树(3)

    系列文章目录 其他章节相关文章 王道--数据结构--栈和队列(1) 本章节其他相关文章 王道--数据结构--树与二叉树(1) 王道--数据结构--树与二叉树(2) 王道--数据结构--树与二叉树(4) ...

  4. 数据结构—树与二叉树

    总第119篇 前言 之前谈到的线性表.栈和队列都是一对一的数据结构,但是现实中也存在很多一对多的数据结构,这篇要写的就是一种一对多的数据结构---树.全文分为如下几部分: 树的一些基本概念 树的存储结 ...

  5. C语言 数据结构 树和二叉树

    树 1.树:是n节点的有限集.树是n(n=>0)个节点的有限集. n=0时成为空树. 在任意一颗非空树中:(1)有且仅有一个称为根的节点:(2)当n>0时,其余节点可分为m(m>0) ...

  6. 数据结构-树,二叉树,森林

    树,二叉树,森林 王卓老师的数据结构课程笔记 树和二叉树 定义 结点之间有分支,具有层次关系 是n个结点的有限集. 若n = 0,称为空树: 若n > 0,则它满足如下两个条件: 有且仅有一个特 ...

  7. 数据结构树、二叉树、完全二叉树、二叉查找树、平衡二叉树、红黑树、B+树

    树.二叉树.平衡二叉树.二叉搜索树 树的前序遍历.中序遍历和后序遍历 树的前序遍历.中序遍历和后续遍历是以遍历时根所在的位置顺序命名的.层次遍历即按层从上至下,从左至右遍历即可. 前序遍历:根-> ...

  8. 数据结构--树和二叉树

    文章目录 树和二叉树 树 1.树的定义 2.树的逻辑表示 3.树的基本术语: 4.树的性质 5.树的基本运算 二叉树 二叉树的存储结构 二叉树的遍历 树和二叉树 树 1.树的定义 2.树的逻辑表示 树 ...

  9. 数据结构——树与二叉树

    树与二叉树 一.树的定义: 1.定义:树(Tree)是n(n>=0)个节点的有限集,n=0时称为"空树".在任意一棵非空树中: ⒈有且仅有一个特定的称为根(root)的节点. ...

  10. Python数据结构与算法笔记(八):数据结构——树,二叉树和AVL树

    树 class Node:def __init__(self, name, type='dir'):self.name = nameself.type = type #"dir" ...

最新文章

  1. 三大框架开发时,spring配置文件出现异常
  2. oracle 事务故障,处理Oracle的分布式事务故障
  3. 76. 最小覆盖子串(滑动窗口)
  4. Atitit.多媒体区----web视频格式的选择总结
  5. 普中科技开发板使用说明书_百度大脑加持,米尔科技FZ3深度学习计算卡评测
  6. jQuery 对话框 jQuery.plugin
  7. 浅析Thinkphp框架中运用phprpc扩展模式
  8. 深度学习之LSTM完全图解
  9. 【激光雷达】激光雷达点云数据的技术流程和点云预处理的方法
  10. U盘安装CentOS系统详细教程
  11. MATROSKA 文件格式
  12. 中职计算机专业英语说课稿,中职英语说课稿模板.doc
  13. 计算机多媒体技术所处理的六个,多媒体技术
  14. Cadence导出Excel格式BOM表
  15. dll hijack 学习
  16. 3种方式获取Wifi名称 兼容获取Wifi名字为空 WifiInfo.getSSID为空的情况
  17. 如何解决“Component ‘MSCOMCTLOCX‘ or one of its dependencies .....“
  18. 人工神经网络的硬件实现,人工神经网络基本概念
  19. 分布式事务--TX-LCN(介绍)
  20. MIT博士研发绘画机器人Utensil,精通绘画和激光切割

热门文章

  1. 《零基础看得懂的C语言入门教程 》——(九)C语言二维数组与循环嵌套
  2. 如何在Clion中使用C++调用Python代码
  3. for in for of区别_Python 第5课:for…in循环黄金搭档之列表
  4. 沙漠上不小心挖了个洞,让这个地狱之门般的巨坑,燃烧了50年
  5. 世纪渣男何书桓! | 今日最佳
  6. 读书笔记-互联网思维必读10本书之一《免费》
  7. oracle怎么删除lob对象,Oracle系列:LOB大对象处理
  8. typora插入代码设置_Typora基本功能介绍
  9. linux下安装服务,linux下的软件服务安装管理
  10. 囊括计算机 电子信息仿真技术,什么是虚拟现实?