知·识·概·要
【树的存储】
什么事树?
树事一种数据结构,类似于图,只不过树事类似于家谱一样,不能越级,而图可以越级。
树的存储与图像啊很像啊,都可以采用邻接表。不过二叉树事可以采用另一种方法的存储——线性表。
【二叉树的线性表存储】
回到久违的迷宫问题!(喜)
为了把这棵树变成一棵二叉树,我们删掉两个点(悲)。
假设我们把家(根结点)存到线性表的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)
,表示树的节点的个数。
第二行,每行两个整数x
、y
,表示x
是y
的父亲。
【输出描述】
输出共占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
那么本期导学就到这里,以以有,阔以有!