树的特征

树是一种数据结构,它是n(n>=0)个节点的有限集。n=0时称为空树。n>0时,有限集的元素构成一个具有层次感的数据结构。

区别于线性表一对一的元素关系,树中的节点是一对多的关系。树具有以下特点:

  1. n>0时,根节点是唯一的,不可能存在多个根节点。
  2. 每个节点有零个至多个子节点;除了根节点外,每个节点有且仅有一个父节点。根节点没有父节点。

树的相关概念

树有许多相关的术语与概念,在学习树的结构之前,我们要熟悉这些概念:

• 子树:除了根节点外,每个子节点都可以分为多个不相交的子树。(图二)

孩子与双亲:若一个结点有子树,那么该结点称为子树根的"双亲",子树的根是该结点的"孩子"。在图一中,B、H是A的孩子,A是B、H的双亲。

兄弟:具有相同双亲的节点互为兄弟,例如B与H互为兄弟。

节点的度:一个节点拥有子树的数目。例如A的度为2,B的度为1,C的度为3.

分支节点:除了叶子节点之外的节点,也即是度不为0的节点。

 

两种特殊的二叉树

斜树

所有节点都只有左子树的二叉树叫做左斜树,所有节点都只有右子树的二叉树叫做右斜树。左斜树和右子树统称为斜树。
斜树已经退化成线性结构,二叉树在查找上表现出来优异性能在斜树得不到体现。

满二叉树

满二叉树要满足两个条件:

  1. 所有的节点都同时具有左子树和右子树。
  2. 所有的叶子节点都在同一层上。

在同样深度的二叉树中,满二叉树的节点数目是最多的,叶子数也是最多的。

 完全二叉树

完全二叉树(Complete Binary Tree) :若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。

二叉树的存储结构

1. 二叉树的顺序存储

^代表不存在的结点。

对于右斜树,顺序存储结构浪费存储空间

2. 二叉链表

链表每个结点包含一个数据域和两个指针域:

其中data是数据域,lchild和rchild都是指针域,分别指向左孩子和右孩子。

转载于:https://www.cnblogs.com/sunbines/p/9074415.html

二叉树的基本理论知识相关推荐

  1. 用VC进行COM编程所必须掌握的理论知识

    用VC进行COM编程所必须掌握的理论知识 这篇文章是给初学者看的,尽量写得比较通俗易懂,并且尽量避免编程细节.完全是根据我自己的学习体会写的,其中若有技术上的错误之处,请大家多多指正. 一.为什么要用 ...

  2. 关于mpi的理论知识以及编写程序来实现数据积分中的梯形积分法。

    几乎所有人的第一个程序是从"hello,world"程序开始学习的 #include "mpi.h" #include <stdio.h> int ...

  3. oracle rac理论知识

    oracle数据库高可靠性高性能的特性是很多企业需要的,这些年一直给各大政府企业做oracle咨询与规划,实施安装以及维护,回头看看,自己已经忘记大部分oracle rac的整体具体架构理论知识,现在 ...

  4. INLINE HOOK过驱动保护的理论知识和大概思路

    INLINE HOOK过驱动保护的理论知识和大概思路,简单驱动保护就是简单的HOOK掉内核API的现象 找到被HOOK的函数的当前地址在此地址处先修改页面保护属性然后写入5个字节.5个字节就是一个简单 ...

  5. Web自动化测试理论知识

    Web 自动化理论知识 1.自动化测试概述 概念:用工具代替/辅助人工完成完成软件测试活动的过程 特点:     可以对程序的新版本自动执行回归测试     可以执行一些手工测试困难或不可能进行的测试 ...

  6. 如何将计算机专业知识和水文结合,2016水文勘测理论知识及参考答案 B卷

    理论知识及参考答案 Ⅰ.必答题(75分) 一.单选题(15分) (在每小题的空档中填入所选内容的序号,每题1分) 1.悬移质含沙量的大小对流速脉动有一定,含沙量增大,流速脉动将( A ),特别是高含沙 ...

  7. 计算机组装维修中级试题,计算机维修工中级理论知识试卷.doc

    计算机维修工中级理论知识试卷.doc 职业技能鉴定国家题库 计算机维修工中级理论知识试卷 注 意 事 项 本试卷依据2007年颁布的<计算机(微机)维修工>国家职业标准命制, 考试时间:9 ...

  8. 从理论知识到落地能力,你欠缺了什么?

    转载自   从理论知识到落地能力,你欠缺了什么? 本文是一个理论过度到实践的典型案例,借助程序员经常遇到的一个问题--网络为什么不通,来具体说明怎么将书本上的死知识真正变成我们解决问题的能力. 大学学 ...

  9. 实用的it知识学习_怎样能更快更好的学习好书法?分享一些比较实用的理论知识...

    如何能更快更高效的学习书法?首先了解一些书法理论知识是很有必要的!它能让你在学习书法的过程中不至于迷茫 !能助你更快学好书法! 一.书论在实践中产生 我们大部分人都觉得学习书法可以没有理论,但不可无技 ...

最新文章

  1. 《javascript语言精粹》读书笔记(一)
  2. 前端遍历列表生成表格_源码剖析狗屁不通文章生成器
  3. Andriod Studio 解决问题 Failed to resolve: com.android.support:appcompat-v7:28.+
  4. Inserting/Removing shutters and filters
  5. 共享X轴,分成上下两图
  6. 前端学习(761):什么是对象为什么需要对象
  7. 网络爬虫--17.【BeautifuSoup4实战】爬取腾讯社招
  8. LeetCode 848. 字母移位(前缀和+取模)
  9. jquery.ajax之beforeSend方法使用介绍
  10. 冲动是魔鬼——4.25
  11. Pointer is missing a nullability type specifier (__nonnull or __nullable)
  12. 宏杉科技 难忘十年
  13. 数字电路基础知识——时序逻辑电路之时序逻辑分析方法
  14. 财务自由之路 读书笔记 第六章 债务
  15. SDK “iphoneos“ cannot be located
  16. vector的 resize()和reserve()的区别
  17. 线性回归的几种评价方法
  18. 各种排序算法的总结和比较
  19. dart 遍历数组_flutter开发,Dart中的那些骚气语法!
  20. 在Excel VBA中使用字典

热门文章

  1. Will it finally: 关于 try/catch 的一些细节
  2. 这是个将近3万人点赞,涉及9大模块,专为程序员准备的面试宝典
  3. 第 3 章 Systems architecture(系统架构)
  4. 学习笔记(番外篇)——python批量转换图片格式
  5. ActiveMQ消息传送机制以及ACK机制详解
  6. 安卓手机文件管理器简单横向评比 - imsoft.cnblogs
  7. There is no public key available for the following key IDs
  8. 【用户行为即时分析查询】 数据仓库实现 案例分享
  9. 注册中心—组件—Consul
  10. 注册中心—常见注册中心组件对比分析