导学_树的存储与遍历

知·识·概·要

【树的存储】

什么事树?
树事一种数据结构,类似于图,只不过树事类似于家谱一样,不能越级,而图可以越级。
树的存储与图像啊很像啊,都可以采用邻接表。不过二叉树事可以采用另一种方法的存储——线性表。

【二叉树的线性表存储】

回到久违的迷宫问题!(喜)

为了把这棵树变成一棵二叉树,我们删掉两个点(悲)。

假设我们把家(根结点)存到线性表的1号位置,那么对于每个结点,如果它位于n号位置,它的左儿子就存到2n号位置,右儿子就存到2n+1号位置。
,就像这样:

但事,线性表存树有一个一个一个一个问题:浪费空间!(大悲)所以我们尽量还是用邻接表进行存储,这样空间浪费会相对少一些罢(悲)。

【二叉树的遍历】

树有五种遍历的方法:先根遍历、后根遍历、层次遍历、叶子遍历。
等一下,这不才四种吗?另一种呢?(恼)
另一种事二叉树特有的遍历方法(赞赏):中根遍历。
还事这棵树,用五种方法把它进行遍历。

先根遍历(根左右):家 A C F D G H 餐厅;
中根遍历(左根右):F C D A H G 餐厅 家;
后根遍历(左右根):F D D H 餐厅 G A 家;
层次遍历(一层一层):家 A C G F D H 餐厅;
叶子遍历(只遍历叶子):F D H 餐厅。

课·后·练·习

【题目描述】

给定一棵树,以最小字典序输出每个节点的儿子编号

【输入描述】

第一行,一个整数n(1<=n<=10^5),表示树的节点的个数。
第二行,每行两个整数xy,表示xy的父亲。

【输出描述】

输出共占n行,第i行开头为i节点和一个冒号:之后为i的孩子编号,每个编号中间用空格隔开,如果i节点没有孩子,则输出zero.

【输入样例】

5
1 2
1 3
1 4
2 5

【输出样例】

1: 2 3 4
2: 5
3: zero
4: zero
5: zero

那么本期导学就到这里,以以有,阔以有!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值