二叉树的基础知识

原创 2016年05月31日 11:16:07
为何要重点研究结点最多只有两个 “叉” 的树? 
        二叉树的结构最简单,规律性最强; 可以证明,所有树都能转为唯一对应的二叉树。

二叉树的定义
        定义:是n(n≥0)个结点的有限集合,由一个根结点以及两棵互不相交的、分别称为左子树和右子树的二叉树组成 。 
        逻辑结构:  一对二(1:2)  
        基本特征: ① 每个结点最多只有两棵子树(不存在度大于2的结点); ② 左子树和右子树次序不能颠倒(有序树)。 
基本形态:


二叉树的存储结构
一、顺序存储结构 按二叉树的结点“自上而下、从左至右”编号,用一组连续的存储单元存储。
        问:顺序存储后能否复原成唯一对应的二叉树形状? 答:若是完全/满二叉树则可以做到唯一复原。(使用性质5 )而且有规律:下标值为i的双亲,其左孩子的下标值必为2i,其右孩子的下标值必为2i+1(即性质5)例如,对应[2]的两个孩子必为[4]和[5],即B的左孩子必是D,右孩子必为E。

讨论:不是完全二叉树怎么办?
答:一律转为完全二叉树! 方法很简单,将各层空缺处统统补上“虚结点”,其内容为空。

二、链式存储结构
        用二叉链表即可方便表示。一般从根结点开始存储。 (相应地,访问树中结点时也只能从根开始)
        注:如果需要倒查某结点的双亲,可以再增加一个双亲域(直接前趋)指针,将二叉链表变成三叉链表。
二叉树结点数据类型定义: 
typedef struct BiTNode 
{      
        int data;      
        struct BiTNode  *lchild, *rchild; 
} BiTNode, *BiTree;

满二叉树:一棵深度为k 且有2k -1个结点的二叉树。(特点:每层都“充满”了结点)

完全二叉树:深度为k 的,有n个结点的二叉树,当且仅当其每一个结点都与深度为k 的满二叉树中编号从1至n的结点一一对应。
完全二叉树的特点就是,只有最后一层叶子不满,且全部集中在左边。这其实是顺序二叉树的含义。在图论概念中的“完全二叉树”是指n1=0的情况。

它们在顺序存储方式下可以复原!










版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

python实现二叉树,以及二叉树的遍历

二叉树Python实现 此二叉树我们用列表来表示它的节点 例如: a[2,None,None],它表示的是根节点为2,没有子节点,a[0]为根节点,a[1]为左子节点,a[2]为右子节点。 数据结...

二叉树算法应用案例

笔者在1月4号将在CSDN学院开设一门公开课《算法与游戏实战》,在这里先把课程内容透露一部分给读者。首先讲述二叉树算法,二叉树在IT领域应用是非常广泛的,它不仅在游戏开发中,在当前比较火的人工智能上也...

二叉树基础及应用

二叉树基础: 刚看到堆排序,顺便记录一下关于树的一些基本概念: 前言 前面介绍的栈、队列都是线性结构(linear structure)。而树是非线性结构(non-linear structu...

二叉树简单应用

在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree),接下来我就在这里给大家介绍一下二叉树在算法中的简...

二叉树及其应用--二叉树的应用

二叉树带节点数输出 给出二叉树的先序遍历输出(空结点用’.’)表示,请构造二叉树,并输出二叉树的广义表表示,此广义表中每个结点均带有一个整数,这个整数表示对应的子树上结点总数。输入说明: 一行仅由...

张正友标定算法原理详解

张正友标定算法原理详解

二叉树的应用

1. 实验目的:掌握二叉树的链式存储结构和常用算法。利用哈夫曼树设计最优压缩编码。 2. 实验内容: 1) 编写函数,实现建立哈夫曼树和显示哈夫曼树的功能。 2) 编写函数,实现生成...

二叉树的应用详解 - 数据结构

概述: 平衡树——特点:所有结点左右子树深度差≤1 排序树——特点:所有结点“左小右大 字典树——由字符串构成的二叉排序树 判定树——特点:分支查找树(例如12个球如何只称3次便分出轻重) 带权树—...
  • hguisu
  • hguisu
  • 2012-06-25 11:45
  • 21912

递归实现搜索二叉树《引用的好处》

#include using namespace std;template struct RBinarySearchTreeNode//递归 { RBinarySearchTreeNode* ...

用递归思想解决二叉树的实际应用

递归的思想在于他将一件n的事情变成n-1的事情,反复如此即可得到一件关于1的事情,所以递归的关键有两点:1.当这件事为1的时候我们的具体操作;2.什么样的事情做n次与做n-1次是一样的。看下面的例子:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)