【3月第四周学习记录】数据结构与算法王卓-第五章树和二叉树-树和森林(存储结构篇)

目录

1. 树和森林的关系

2. 树的存储结构

双亲表示法

孩子链表

二叉树/二叉链表表示法(最常用)


1. 树和森林的关系

树和森林之间是可以相互转换的:将树的根节点去掉,就成了森林;给森林加上一个共有的根节点,就成了树。

 

2. 树的存储结构

双亲表示法

特点: 找parent结点简单,找child难

适用场景:经常需要找某结点的parent结点的情况

函数定义

第一框为定义结点,第二框为定义树结构。

 

孩子链表

特点: 找child容易,找parent难

适用场景:经常需要找某结点的child结点的情况

函数定义

由简至繁:第一框是最低等级,为上图中的最右边记录数字与next的链表结点;

第二框是数组中每个单独的结点,为上图中A~K的结点(此时不要竖着看,仍然要横着看,到此还没有建立起竖着的关系,这就是在定义每一横行的头指针)

第三框才是树结构,定义一个数组,建立起了头指针之间的联系。此时头指针才有编号。 

改进方法

再增加一个位置存储parent位置,增大了便利性,但牺牲了空间 

 

二叉树/二叉链表表示法(最常用)

特点:找child容易,找parent难

适用场景:经常需要找某结点的child结点的情况

函数定义

与二叉链表的节点定义非常相似,每个节点由 一个数据域 + 两个指针域 构成。

例 

作者的疑问

1. 为什么每层中最后一个结点的兄弟指针不指向该层的第一个结点,实现闭环?例如:要找B的所有兄弟结点,只能由B到C而无法找到A

2. 在索引二叉树章节中,学会了利用悬空指针域的方法。增加一个存储0/1的空间占用空间极少,为什么在此情况不利用起来,比如在悬空的状态下,更改tag,指向parent结点,却放任指针域悬空而限制操作数量?

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值