树与二叉树及其基本性质

01-数据结构与算法 飞快学 392浏览

本节的重点是识别完全二叉树及掌握二叉树的基本性质。

树的基本概念

树(tree)是一种简单的非线性结构。在树这种数据结构中,所有数据元素之间的关系具有明显的层次特性。在树结构中,每一个结点只有一个前件,称为父结点。没有前件的结点只有一个,称为树的根结点,简称树的根。每一个结点可以有多个后件,称为该结点的子结点。没有后件的结点称为叶子结点。在树结构中,一个结点所拥有的后件的个数称为该结点的度,所有结点中最大的度称为树的度。树的最大层次称为树的深度。

二叉树的定义

二叉树是一种很有用的非线性结构,具有以下两个特点:1)非空二叉树只有一个根结点;2)每一个结点最多有两棵子树,且分别称为该结点的左子树和右子树。

二叉树的度可以为0(叶结点)、1(只有一棵子树)或2(有2棵子树)。

二叉树的基本性质

二叉树具有以下几个性质:

性质1:在二叉树的第k层上,最多有2k-1(k≥1)个结点;

性质2:深度为 m 的二叉树最多有2m-1个结点;

性质3:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个;

性质4:具有n个结点的二叉树,其深度至少为[log2n]+1,其中[log2n]表示取log2n的整数部分。

小技巧:在二叉树的遍历中,无论是前序遍历,中序遍历还是后序遍历,二叉树的叶子结点的先后顺序都是不变的。

满二叉树与完全二叉树

满二叉树是指这样的一种二叉树:除最后一层外,每一层上的所有结点都有两个子结点。在满二叉树中,每一层上的结点数都达到最大值,即在满二叉树的第 k 层上有2k-1个结点,且深度为m的满二叉树有2m-1个结点。

完全二叉树是指这样的二叉树:除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。

man-wanquan

对于完全二叉树来说,叶子结点只可能在层次最大的两层上出现:对于任何一个结点,若其右分支下的子孙结点的最大层次为p,则其左分支下的子孙结点的最大层次或为p,或为p+1。

完全二叉树的性质

性质5:具有n个结点的完全二叉树的深度为[log2n]+1。

性质6:设完全二叉树共有n个结点。如果从根结点开始,按层次(每一层从左到右)用自然数 1,2,……,n 给结点进行编号,则对于编号为k(k=1,2,……,n)的结点有以下结论:

1)若k=1,则该结点为根结点,它没有父结点;若k>1,则该结点的父结点编号为INT(k/2)。

2)若2k≤n,则编号为k的结点的左子结点编号为2k;否则该结点无左子结点(显然也没有右子结点)。

3)若2k+1≤n,则编号为k的结点的右子结点编号为2k+1;否则该结点无右子结点。