小小白祈祷中...

前言

写在前面的话:数据结构与算法。

  1. 对于初识数据结构的小伙伴们,鉴于后面的数据结构的构建会使用到同tag前面的内容,包括具体数据结构的应用,所使用到的数据结构,也是自己构建的,未使用系统的库文件,因此,建议这类小伙伴们按顺序进行学习;

  2. 对于想查询有关资料的小伙伴们,可以选择性地浏览。希望大家都能有所收获~

二叉树基本概念

上一章,我们介绍了队列结构。从本章开始,我们会陆续接触到一些非线性数据结构,由前面的学习我们知道,对一个数据系统而言,如果查找操作比较频繁的话,一般采用顺序结构存储;如果删除,插入操作比较频繁的话,一般采用链式结构存储;

那我们想一想,有没有这样一种数据结构,其兼有顺序结构和链式结构的优点

有!树形结构!。

树形结构中最基础,最重要的,非二叉树莫属。本节主要介绍二叉树中的一些基本概念:

  1. 定义:
    二叉树是每个结点最多有两个子树的树结构。

  2. 概念:
    节点的度:一个节点含有的子树的个数称为该节点的度;
    叶节点:度为0的节点称为叶节点;
    双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;
    孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点;
    兄弟节点:具有相同父节点的节点互称为兄弟节点;
    树的度:一棵树中,最大的节点的度称为树的度;
    节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;
    树的高度:树中节点的最大层次;
    兄弟节点:双亲在同一层的节点互为兄弟节点;
    节点的祖先:从根到该节点所经分支上的所有节点;
    子孙:以某节点为根的子树中任一节点都称为该节点的子孙。
    森林:由m棵互不相交的树的集合称为森林;

  3. 基本性质:
    性质1:二叉树第i层上的结点数目最多为2^i-1(i>=1);
    性质2:深度为k的二叉树至多有2k-1个结点(k>=1);
    性质3:包含n个结点的二叉树的高度至少为[log2n]+1; (向下取整)
    性质4:在任意一棵二叉树中,若叶结点的个数为n1,度为2的结点数为n2,则n1=n2+1;

  4. 特殊二叉树:
    满二叉树
    定义:高度为h,并且由2^h-1个结点组成的二叉树,称为满二叉树
    完全二叉树
    定义:一棵二叉树中,只有最下面两层结点的度可以小于2
    并且最下层的叶结点集中在靠左的若干位置上,这样的二叉树称为完全二叉树
    特点:叶子结点只能出现在最下层和次下层,且最下层的叶子结点集中在树的左部
    显然,满二叉树必定是完全二叉树,而完全二叉树未必是满二叉树

  5. 二叉树的三种遍历:
    – 前序遍历:根节点->左子树->右子树
    在遍历左右子树时,仍然先访问根节点,再遍历左子树,最后遍历右子树。
    – 中序遍历:左子树->根节点->右子树
    在遍历左右子树时,仍然先遍历左子树,再遍历根节点,最后遍历右子树。
    – 后序遍历:左子树->右子树->根节点
    在遍历左右子树时,仍然先遍历左子树,再遍历右子树,最后访问根节点。

下一章将介绍二叉树的构建过程。

本文作者:LuoYing @ 小小白的笔记屋

本文链接:https://luoying.netlify.app/2021/08/20/qqkjp9oi/

本文标题:数据结构与算法之-----二叉树(一)

本文版权:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!