有一棵合法的二叉树,共有n个节点(1<=n<=1000),节点编号为(0~n-1),给定节点间的父子关系,求树的高度。
输入:第一行一个整数n,接下来有n-1行。每行两个整数,以空格分隔,第一个表示父节点编号,第二个表示子节点编号。
输出:树的高度
样例输入:
5
0 1
0 2
1 3
1 4
样例输出
3
这个题的关键是树的表示,其次是求树的高度:
(1)定义结构体用指针表示二叉树间节点关系
规规矩矩定义结点结构,构建一棵树,同时用指针数组存储下每个节点的地址,一遍为他添加孩子节点时能迅速找到。这个方法要完完整整写下来估计耗时不少。
(2)用数组表示
数组表示可能有多种,先说一维数组,当节点数目比较小时,可以考虑用完全二叉树的那种数组表示,2*n为左孩子,2*n+1为右孩子。但是有个巨大的问题是数组开多大,事实上当节点数为20的时候,数组就需要1024*1024这么大了,所以对于此题这种解法不可取(坑爹的我直接用的这个)
二维数组1001*2,我们可以用数组下标代表节点,每个节点2个单元,第一个单元表示左孩子下标,第二个单元表示右孩子单元。每次先存放左孩子单元