二叉树的定义

二叉树(Binary Tree)是n(n≥0)个元素的有限集合,该集合为空或者为由一个称为“根”的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成
二叉树的基本特点:

  • 每个结点最多有两棵子树
  • 左子树和右子树是有顺序的,且不可颠倒

  • 图一

    节点、度和叶子的概念

  • 1、结点
  • 二叉树中的每一个元素都称为结点。通常二叉树的许多名词借用了家族关系
    例如在上图中,2、3均是1的子结点,1是2&3的双亲,因而2、3互为“兄弟结点”

  • 2、度
  • 二叉树的度代表某个结点的孩子或者后继人的个数,1度表示只有一个孩子或者称之为单子树,2度是两个孩子或者说左右子树都有的二叉树。当然,二叉树某个结点的最大度为2.例如2的度数为2,3的度数为1

  • 叶子
  • 叶子是叶子结点的简称,叶子也就是leaf,原指网络结构中的某些计算机,它们从比较靠近中心的计算机处接收信号,而不把信号传至较远的计算机。在二叉树中叶子结点指树种处于最底端的结点,叶子结点没有子结点 例如上图中的 4、5、6均为叶子结点

    特殊二叉树


    图二

    特殊二叉树有:满二叉树完全二叉树

  • 满二叉树:
  • 在一棵二叉树中,如果所有分支结点都存在左子树和右子树,并且所有叶子结点都在同一层上,这样的一棵二叉树称之为满二叉树
    例如图二中的第一张图,即为一棵满二叉树。而第二张图的B结点由于没有右子节树,所以不是满二叉树。
    满二叉树的特点有:

    1.叶子只能出现在最下一层
    2.非叶子结点的度一定为2
    3.在同样深度的二叉树中,满二叉树的结点个数最多,叶子最多

  • 完全二叉树
  • 一棵深度为k的有n个结点的二叉树,从树中的结点按从上至下、从左至右的顺序进行编号,如果编号为i(1≤i≤n)的节点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树,如图二的第三张图。

    1.叶子结点只能出现在最下两层
    2.最下层的叶子若有结点,一定集中在左下部分
    3.倒数第二层若有叶子结点,一定都集中在右半部分
    4.如果结点度为1,则该结点只有左孩子,即不存在只有右孩子之说。
    5.同样结点数的二叉树,完全二叉树的深度最小

    二叉树&满二叉树与完全二叉树的更多相关文章

    1. 树&二叉树&&满二叉树&&完全二叉树&&完满二叉树

      目录 树 二叉树 完美二叉树(又名满二叉树)(Perfect Binary Tree) 完全二叉树(Complete Binary Tree) 完满二叉树(Full Binary Tree) 树 名称 ...

    2. 【algo&ds】【吐血整理】4.树和二叉树、完全二叉树、满二叉树、二叉查找树、平衡二叉树、堆、哈夫曼树、B树、字典树、红黑树、跳表、散列表

      本博客内容耗时4天整理,如果需要转载,请注明出处,谢谢. 1.树 1.1树的定义 在计算机科学中,树(英语:tree)是一种抽象数据类型(ADT)或是实作这种抽象数据类型的数据结构,用来模拟具有树状结 ...

    3. 找出 int 数组的平衡点 & 二叉树 / 平衡二叉树 / 满二叉树 / 完全二叉树 / 二叉查找树

      找出 int 数组的平衡点 左右两边和相等, 若存在返回平衡点的值(可能由多个); 若不存在返回 -1; ``java int [] arr = {2,3,4,2,4}; ```js const ar ...

    4. [LeetCode] 894. All Possible Full Binary Trees 所有可能的满二叉树

      A full binary tree is a binary tree where each node has exactly 0 or 2 children. Return a list of al ...

    5. UVA 712-S-Trees(满二叉树的简单查询)

      题意:给一棵满二叉树,叶子节点赋予权值,0或者1,对于每个查询输出叶子节点的权值,每个查询0代表往左走,1代表往右走,这题坑的地方是层的访问顺序,如第二组测试,由上到下依次是x3,x1,x2,假如给一 ...

    6. [Swift]LeetCode894. 所有可能的满二叉树 | All Possible Full Binary Trees

      A full binary tree is a binary tree where each node has exactly 0 or 2 children. Return a list of al ...

    7. 【C++】满二叉树问题

      /* 给出一棵满二叉树的先序遍历,有两种节点:字母节点(A-Z,无重复)和空节点(#).要求这个树的中序遍历.输出中序遍历时不需要输出#. 满二叉树的层数n满足1<=n<=5. Sampl ...

    8. python实现满二叉树递归循环

      一.二叉树介绍点这片文章 二叉树及题目介绍 例题: 有一颗满二叉树,每个节点是一个开关,初始全是关闭的,小球从顶点落下, 小球每次经过开关就会把它的状态置反,这个开关为关时,小球左跑,为开时右跑.现在 ...

    9. PAT甲级题解-1123. Is It a Complete AVL Tree (30)-AVL树+满二叉树

      博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6806292.html特别不喜欢那些随便转载别人的原创文章又不给 ...

    随机推荐

    1. golang 文件传输小demo(转载)

      转载地址:https://www.cnblogs.com/qq702368956/p/10195497.html 获取文件信息需要用到os. Stat接口,发送文件前开启接收者(服务端),启动客户端先 ...

    2. crontab定时任务接入

      # 查看 $ crontab -l # 创建 $ crontab -e # 每分钟输出一次当前时间 * * * * * echo `date` >> /demo.log # 查看定时 $ ...

    3. Unity3d客户端与Photon服务器数据通信

      今天先介绍一下Photon服务器是什么,可以做什么,为什么要使用它? Photon:开发多人联网游戏最轻松的方案!可以迅速简单实现多人实时在线网络游戏(pvp). Photon:透过位于各地的Phot ...

    4. Spring 事务模板方法设计模式

      接上一篇文章 上一篇讲到了doGetTransaction方法 一.模板方法设计模式 这里涉及到了一个经典的设计模式:模板方法 如下图: AbstractPlatformTransactionMana ...

    5. USB:USB通信中的端点(endpoint)和四种传输模式

      USB的传输模式有4种,分别是控制传输(Control Transfer).中断传输(Interrupt Transfer).批量传输或叫块传输(Bulk Transfer).实时传输或叫同步传输(I ...

    6. python爬虫案例:使用XPath爬网页图片

      用XPath来做一个简单的爬虫,尝试爬取某个贴吧里的所有帖子,并且将该这个帖子里每个楼层发布的图片下载到本地. # -*- coding:utf-8 -*- import urllib import ...

    7. spark streaming流式计算---监听器

      随着对spark的了解,有时会觉得spark就像一个宝盒一样时不时会出现一些难以置信的新功能.每一个新功能被挖掘,就可以使开发过程变得更加便利一点.甚至使很多不可能完成或者完成起来比较复杂的操作,变成 ...

    8. [译]使用BeautifulSoup和Python从网页中提取文本

      如果您要花时间浏览网页,您可能遇到的一项任务就是从HTML中删除可见的文本内容. 如果您使用的是Python,我们可以使用BeautifulSoup来完成此任务. 设置提取 首先,我们需要获取一些HT ...

    9. vue mpvue 上拉加载更多示例代码

      vue 上拉加载更多示例代码 可以比较简单的改为 mpvue , 去除滚动判断,直接放在 onReachBottom 周期即可. html <div id="app"> ...

    10. VS Code中配置python版本以及Python多版本

      VS Code中配置python版本VS Code十分方便配置python的版本:可以选在在本地setting.json或者全局setting.json文件中配置:python.pythonPath在 ...