【图解数据结构】树和二叉树全面总结(上)

本文详细介绍了树和二叉树的概念,包括树的定义、结点关系、度和高度等属性,并深入讲解了二叉树的性质、满二叉树和完全二叉树的区别。此外,还探讨了二叉树的三种存储结构:顺序存储、二叉链表和三叉链表,以及相关例题解析。
摘要由CSDN通过智能技术生成

目录

一、前言

二、树的概念和定义

三、二叉树

1.基本概念

2.基本形态

3.性质

4.满二叉树

5.完全二叉树

四、存储结构

1.顺序存储

2.二叉链表

3.三叉链表



 一、前言

  • 学习目标:理解树和二叉树的基本概念与性质、存储结构
  • 重点二叉树的五个性质存储结构

二、树的概念和定义

  • 定义:n(n>=0)个结点的有限集合,n=0,空树
  • 结点:表示树中的元素
  • 根结点:第一个元素
  • 叶结点:度为0,即没有子树
  • 双亲结点:结点的直接前驱
  • 孩子结点:结点的直接后继
  • 兄弟结点:同一双亲结点的孩子
  • 结点的度:结点的子树个数
  • 结点的层次:根节点层次为1,依次向下加一
  • 树的度:树中所有结点度的最大值
  • 树的高度:树中所有结点层次的最大值
  • 森林:m(m>=0)棵互不相交树的集合

例题:

求出下图的叶子结点、树的度、高度、结点B、C、D的度、H的兄弟和双亲、E的孩子

  • 叶子结点:K、L、F、G、M、I、J
  • 树的度和高度:3(最大结点的度数是D)、4
  • 结点B、C、D的度:2、1、3
  • H的兄弟和双亲、E的孩子:I、J        D        K、L

三、二叉树

1.基本概念

  • 定义:满足每个结点度不大于2,孩子结点次序确定的树
  • 左孩子:位于左侧
  • 右孩子:位于右侧

2.基本形态

  • n个结点有{C}_{2n}^{n}\/(n+1)不同形态的二叉树

3.性质

  1.  在二叉树的第i层上最多有 2^{i-1}个结点(i>=1)
  2.  深度为k的二叉树最多有 2^{k}-1个结点(k>=1)
  3.  对于任意一棵二叉树,度为0的结点数等于度为2的结点数+1
  4.                                           结点为i双亲结点为i/2向下取整,左孩子2*i,右孩子2*i+1

4.满二叉树

特点: 

  • 每一层的结点数都是最大结点数

5.完全二叉树

  • 结点按照编号从左到右依次构建二叉树,不存在无左孩子、却有右孩子的情况
  • 满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树

例题:

四、存储结构

1.顺序存储

  • 实现:按照结点的层次编号,依次放入数组中,如上图编号的123456789
  • 特点结点间关系蕴含在其存储位置中、浪费空间,适于存满二叉树和完全二叉树

2.二叉链表

  • lchild:指向左孩子结点,没有置为空
  • rchild:指向右孩子结点,没有置为空
  • 特点:在n个结点的二叉链表中,有n+1个指针域

结构体:

typedef  struct BiTNode
{    TElemType    data;
      struct BiTNode *lchild,  *rchild;
} BiTNode,*BiTree;

例:

3.三叉链表

  • 定义:三叉链表就是有三个指针域,lchild指向左孩子,rchild指向右孩子和二叉链表一样,多出一个parent指向它的双亲结点

结构体:

typedef   struct  TriTNode
{ TElemType data;
      struct TriTNode  *lchild,  *rchild,  *parent;
} TriTNode,*TriTree;

例:

附录:

评论 48
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知心宝贝

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值