一、关键术语

1. 节点的度:一个节点含有的子树的个数称为该节点的度;

2. 叶节点或终端节点:度为零的节点;

3. 非终端节点或分支节点:度不为零的节点;

4. 父亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;

5. 兄弟节点:具有相同父节点的节点互称为兄弟节点;

6. 节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;

7. 树的高度或深度:树中节点的最大层次;

8. 堂兄弟节点:父节点在同一层的节点互为堂兄弟;

9. 节点的祖先:从根到该节点所经分支上的所有节点;

10. :以某节点为根的子树中任一节点都称为该节点的子孙。

11. 森林:由m(m>=0)棵互不相交的树的集合称为森林;

12. 满二叉树:一棵深度为k,且有2^k-1 (2的k次方减一)个节点称之为满二叉树 ;

13. 完全二叉树:完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。叶节点只能出现在最下层和次下层,并且最下面一层的结点都集中在该层最左边的若干位置的二叉树。

二、二叉树的性质

1.在非空二叉树中,第i层的结点总数不超过2^(i-1),i>=1;

2.深度为h的二叉树最多有2^h-1个结点(h>=1),最少有h个结点;

3.对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,则N0=N2+1;

4.具有n个结点的完全二叉树的深度为K =[log2n」+1(取下整数)

5.有N个结点的完全二叉树各结点如果用顺序方式存储,则结点之间有如下关系: 若I为结点编号则 如果I>1,则其父结点的编号为I/2;

6.完全二叉树,如果2*I<=N,则其左儿子(即左子树的根结点)的编号为2*I;若2*I>N,则无左儿子; 如果2*I+1<=N,则其右儿子的结点编号为2*I+1;若2*I+1>N,则无右儿子。

7.给定N个节点,能构成h(N)种不同的二叉树。h(N)为卡特兰数的第N项。h(n)=C(2*n,n)/(n+1)。

8.设有i个枝点,I为所有枝点的道路长度总和,J为叶的道路长度总和J=I+2i

二叉树的遍历三种方式,如下:

(1)前序遍历(DLR),首先访问根结点,然后遍历左子树,最后遍历右子树。简记根-左-右。

(2)中序遍历(LDR),首先遍历左子树,然后访问根结点,最后遍历右子树。简记左-根-右。

(3)后序遍历(LRD),首先遍历左子树,然后遍历右子树,最后访问根结点。简记左-右-根。

算法学习总结(3)——二叉树数据结构重点知识总结相关推荐

  1. 【算法学习笔记】二叉树的基本操作实现和应用举例,根据先序与中序遍历建立二叉树的实现

    基本操作 给某结点插入一个左孩子 删除二叉树中某结点的左子树 根据先序与中序遍历建立二叉树 应用举例 查找数据元素 二叉链表存储结构 统计叶结点的数目 基本操作 通常有:建立空二叉树.生成以X为根节点 ...

  2. 【算法学习笔记】08.数据结构基础 二叉树初步练习1

    此次重点在于一个二叉树的引例题,其实和二叉树没什么太大的关系,但是很经典. 小球下落 刘汝佳白书P99 比较傻瓜化的方式是,对每个小球进行路线分析,在路线分析的过程中不断动态的改变节点的状态从而实现累 ...

  3. 算法学习笔记:简单数据结构及排序算法

    原学习视频跳转地址:https://www.bilibili.com/video/BV13g41157hK?p=2 本文为自学视频整理的简单笔记 目录 排序 冒泡排序 选择排序 插入排序 归并排序(递 ...

  4. 经典算法学习——层序遍历二叉树

    我们可以用很多方式去遍历一颗二叉树,比如先序遍历,中序遍历,后序遍历,其实都是通过递归的来实现.今天我们来对二叉树进行层序遍历,层序遍历的时候需要借助另一种数据结构--队列.本篇的示例代码上传至 ht ...

  5. 【算法学习笔记】高级数据结构 B树

    参考算法导论第18章 B树 1. B树概述 B树是为「磁盘或其他直接存取的辅助存储设备」而设计的一种平衡搜索树.B树类似于红黑树(算导第13章),但它们在降低磁盘I/O操作数 minimizing d ...

  6. 【算法学习笔记】07.数据结构基础 链表 初步练习

    写这篇文章时离学完列表已经很久了 最近真的是很懒. 数据结构这部分在刘汝佳的白书上的部分太少了,我一点要找个时间好好的看一下程杰的大话. 链表的优点是它强调的是相关元素之间的相对顺序,左和右.其实可以 ...

  7. 新手算法学习之路----二叉树(二叉树最大路径和)

    摘抄自:https://segmentfault.com/a/1190000003554858#articleHeader2 题目: Given a binary tree, find the max ...

  8. Python数据结构与算法(1.1)——数据结构与算法导论

    Python数据结构与算法(1.1)--数据结构与算法导论 0. 学习目标 1. 数据结构概述 1.1 什么是数据结构 1.2 逻辑结构和物理结构 1.3 抽象数据类型 1.4 数据结构学习的必要性 ...

  9. 数据结构与算法学习笔记-树和二叉树

    声明:本博客仅为本人学习途中做的笔记 采自青岛大学王卓老师的视频教学 主要内容为算法思路,具体代码实现还需修改后才能运行,望各位看官多多包涵,您的点赞与评论是对我最大的肯定! 1.树和二叉树的定义 数 ...

最新文章

  1. 视频演示:高颜值免费在线绘图ImageGP
  2. intelliJ idea如何安装、配置
  3. jira 查找issue_JIRA使用教程:高级搜索—字段参考4/4
  4. 前端学数据库之基础操作
  5. HIVE中常见文件存储格式比较
  6. acm题库及答案 java_ACM试题及答案.docx
  7. 安卓设备java代码编辑器_15款android设备上的代码编辑器,超级方便!-Go语言中文社区...
  8. linux打开cap文件,cap/pcap类文件无法用wireshark打开
  9. 数据库中如何新增一个字段
  10. 研究生做实验时被炸伤致残!法院判决:驳回高校上诉,赔偿162万!
  11. 网易邮箱大师代收gmail
  12. 5000字:一文看懂用户运营之增长八卦模型
  13. 上传截断_文件上传路径截断实例
  14. Aria2-突破百度网盘下载限速
  15. 口碑极好的SAP PP培训视频, 21G, 52个视频
  16. Android的读写文件权限
  17. 【C语言】Bingo 猜数字
  18. jupyter notebook是一种Web 应用,能让用户将说明文本、数学方程、代码和可视化内容全部组合到一个易于共享的文档中
  19. 知云文献翻译打不开_知云文献翻译 for mac v1.0.1
  20. 统计素数并求和 / 求奇数和

热门文章

  1. 关于OpenCV的基本数据类型
  2. linux充电时熄屏时间,充电时玩手机会损害电池吗
  3. java中递归删除_浅谈Java中使用递归方法删除文件
  4. linux重启ipv6_Linux关闭、开启、配置IPv6
  5. python制表符_关于ROS运行python的一些问题
  6. java 代码检验表不存在_诊断 Java 代码: Liar View 错误模式
  7. 研究生图像处理该怎的自学_2020研究生入学资格,中级经济师资格-小嗨视频课堂...
  8. java strlen,跟妹妹聊到 Java 16 新特征,真香!
  9. php外边框样式,CSS中的边框样式
  10. 计算机可以配置端口号吗,如何设置打印机端口,详细教您设置电脑打印机端口...