数据结构与算法——树与二叉树详细分享

在这里插入图片描述


一、树

1、定义:由n个有限节点组成一个具有层次关系的集合,看起来像一颗倒挂的树,特点:
2、特点:
a、每个节点有0个或多个子节点
b、没有父节点的节点称为根节点(A)
c、每一个非根节点有且只有一个父节点(eg:B和C的父节点为A;D和E和F的父节点为B)
eg:下图的F节点有2个父节点,不能称为树结构
在这里插入图片描述

d、除了根节点外,每个子节点可以分为多个不相交的子树
在这里插入图片描述

二、树的术语

1、节点的度:一个节点含有的子树的个数(节点A的度度为2,B的度为3,D的度为1,I的度为0)
2、树的度:树中所有节点的度的最大值(度为3)
3、叶节点:度为0的节点(I、J、K)
4、子节点:一个节点含有的子树的根节点称为该节点的子节点(B是A的子节点;D是B的子节点;不能说是D是A的子节点)
5、父节点:若一个节点有子节点,那么这个节点就是其子节点的父节点
6、兄弟节点:具有相同父节点的节点互称兄弟节点
在这里插入图片描述

7、堂兄弟节点:在同一层的节点互称堂兄弟节点
在这里插入图片描述

8、祖先节点:从根到该节点所经路径上的所有节点(A、B、D都是I的祖先节点)
在这里插入图片描述
9、子孙节点:以某节点为根的子树中的所有节点(所有节点都是A的祖先节点)
10、节点层次:根节点层次为1,其他节点层次是父节点的层次加1
在这里插入图片描述
11、树的深度:树中所有节点的层次的最大值(深度为4)
12、森林:多颗不相交的树的集合

三、二叉树

1、二叉树

1、二叉树:每个节点最多含有两个子树的树称为二叉树
在这里插入图片描述

2、完全二叉树

2、完全二叉树:除了最底层外,其他各层的节点数目均达到最大值,且最底层的节点应从左往右紧密排列

在这里插入图片描述

3、满二叉树

3、满二叉树:所有叶节点都在最底层的完全二叉树
在这里插入图片描述

4、二叉搜索树

4、二叉搜索树:对于一个节点,它的左子树上的所有节点的值都比它小,右子树上的所有节点的值都比它大

四、二叉树的存储结构

1、顺序存储: 从上往下,从左往右的将树存到顺序表中
2、优点: 遍历方便,可以用索引来表示节点间的关系
3、缺点: 可能会对存储空间造成极大的浪费

在这里插入图片描述
遍历结果为:5,4,C,None,None,G,H,None,None,None,None,M,N,F,O

4、顺序存储适用于存完全二叉树
5、链式存储: 每个节点具有 左指针域, 数据域, 右指针域, 以此来连接
优点:不会浪费空间

在这里插入图片描述
遍历结果为:5,4,C,G,H,M,N,F,O


在这里插入图片描述

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

敲代码敲到头发茂密

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值