数据结构算法--树详解

一、树定义

二、树存储

双亲表示

孩子表示

孩子兄弟表示

三、二叉树

定义

存储

分类

遍历


一、树定义

:n个节点的有限集合,非空树(n>0)满足:有且只有一个根节点;n>1时,除去根节点的m个节点本身又是一棵树,为子树;树是递归的,除根节点外每个节点都有一个前驱节点;除叶节点外每个节点都有>=1个后继节点。

祖先:任意节点x,从根节点到节点x的所有节点都是x的祖先(节点x也是自己的祖先)

父节点:如果节点含有子节点,则这个节点称为其子节点的父节点  

兄弟节点:拥有共同父节点的节点互称兄弟节点 

子节点:一个节点含有的子树的根节点称为该节点的子节点  

后代:任意节点x,从节点x到叶子节点的所有节点都是x的后代(节点x也是自己的后代)

节点的层次:根节点为第一层,根节点的子节点为第二层,以此类推

:节点的子节点树数目就是节点的度

叶节点:度为零的节点为叶节点

节点深度:对任意节点x,x节点的深度表示根节点到x节点的路径长度。所以根节点深度为0,第二层节点深度为1,以此类推

节点高度:对任意节点x,叶子节点到x节点的路径长度就是节点x的高度  

树的深度:一棵树中节点的最大深度为树的深度,也称高度

森林:m颗互不相交的树构成的集合就是森林

二、树存储

双亲表示
数组下标数据父节点
0A-1
1B0
2C0
3D1
4E1
5F2
6G2
7H3
8I3
9J4
10K4
孩子表示

孩子兄弟表示

三、二叉树

定义

二叉树:有序树;每个节点最多有2个子节点,子节点有左右之分。二叉树第i层有2^(i - 1)个节点。假如二叉树深度为K,则二叉树最多有2^(K - 1)个节点。

存储

顺序存储:二叉树,存储为一维数组如下图所示:

不完全二叉树存储为下图所示:

链式存储同上孩子兄弟表示

分类

满二叉树:除叶子节点外的所有节点都有两个子节点,并且所有叶子节点都在同一层

完全二叉树:除最后一层叶子节点可能有一个子节点外,其他所有层的节点有两个子节点

二叉搜索树:左子树的所有节点都小于根节点,右子树的所有节点都大于根节点

平衡二叉树:左右子树的高度差不超过某个固定值。常见的平衡二叉树有红黑树、AVL树等,它们旨在提供更快的插入、删除和查找操作

二叉堆:满足堆序性质的完全二叉树,常用于实现优先队列和堆排序算法

线索二叉树:通过添加额外的指针(线索)来提高遍历效率,使得可以直接找到节点的前驱和后继节点

遍历

先序遍历:

先根节点,再遍历完左子树,最后到右子树

A->B->D->G->H->C->E->I->F

中序遍历

G->D->H->B->A->I->E->C->F

后序遍历

G->H->D->B->I->E->F->C->A

层次遍历

A->B->C->D->E->F->G->H->I

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值