算法笔记:树和二叉树基础

专题:树和二叉树基础

内容来源:《挑战程序设计竞赛》(第2版)+《算法竞赛入门经典》(第2版)+网上资料整理汇总

一、引入

1. 树是一种非线性的数据结构,用它能很好地描述有分支和层次特性的数据集合。树型结构在现实世界中广泛存在,如社会组织机构的组织关系图就可以用树型结构来表示。树在计算机领域中也有广泛应用,如在编译系统中,用树表示源程序的语法结构。在数据库系统中,树型结构是数据库层次模型的基础,也是各种索引和目录的主要组织形式。在许多算法中,常用树型结构描述问题的求解过程、所有解的状态和求解的对策等,尤其是建立在树型结构基础之上的搜索算法

        在树型结构中,二叉树是最常用的结构,它的分支个数确定、又可以为空、并有良好的递归特性,特别适宜于程序设计,因此也常常将一般树转换成二叉树进行处理。

2. 树形结构描述:一种”节点+边”数据结构。在图中用圆代表节点,用线代表边

二、树(这里指有根树,熟练掌握概念)

1. 有根树:一棵具有根节点的树。有根树的节点之间具有父子关系。

2. 几个概念:

        (1)节点:

        ①根节点:没有父节点的节点,在一棵树中是唯一的

        ②叶节点(外部节点):没有子节点的节点

        ③非叶节点(内部节点):除叶节点以外的节点

        (2)节点x的:节点x的子节点的数目(叶节点的度为0)

        (3)节点x的深度:从根r节点x的路径长度(即经过的边数)

        (4)节点x的:节点x到叶节点的最大路径长度

        一棵树中根节点的高度最大,我们也称其为树的高度

三、二叉树(熟练掌握操作)

1. 定义:二叉树(binary tree)是一种特殊的树形结构,它的度为2,即每个节点最多有两个子节点。每个节点的子节点分别称为左孩子、右孩子,它的两棵子树分别称为左子树、右子树。(此定义为递归定义

        5种基本形态如下:

算法笔记:树和二叉树基础_第1张图片

2. 重要性质

(1)在二叉树的第i层上最多有2i-1个节点(i为正整数)

        证明:数学归纳法:当i=1时,2i-1=1显然成立;现在假设第i-1层时命题成立,即第i-1层上最多有2i-2<

你可能感兴趣的:(算法笔记系列)