链式前向星是一种较为常用的存储非线性数据的存储方式,其借助数组实现类似链表功能的操作方法令人津津乐道。
在常见的图或树结构中,我们需要对每个点所连出去的边进行存储。在链式前向星中,我们对每个点都记录了一个头指针,然后从头指针出发将所有边上的点连到一条链上。
例如如下图的树形结构:
对于节点1,我们可以选择2、3、4中的一个点作为头指针指向的节点,然后将剩下的点连接到头指针的后面。在上图中若选择2作为头指针节点,那么我们有:
若选择3作为头指针节点,我们有:
或者:
可以发现,当选择的头指针节点不同,连接剩余子节点的顺序不同时,我们最终得到的链长度是不同的。注意到使用链式前向星进行存储时,我们总可以将一颗树转化为二叉树。
请你对于给出一颗树,对每个节点假设可以选择任意一个儿子节点作为头指针节点,计算使用链式前向星进行节点存储时。可以得到的二叉树的最大深度为多少,假设根节点的深度为0。