求树的层数的问题。。
一棵树有n个节点,其中1号节点为根节点。
输入
第一行是整数n,表示节点数
后面若干行,每行两个整数a b,表示b是a的子节点。
输出
求这棵树的层数(根节点为第1层)
样例输入
5
1 2
1 3
3 4
3 5
样例输出
3
class Tree<T> {
public Tree(T d) {
this.data = d;
}
Tree<T> parent=null;
T data = null;
List<Tree> children = new Vector<Tree>();
public int level(){
ListIterator<Tree> it = children.listIterator();
int level=0;
while(it.hasNext()){
Tree p = it.next();
int plevel=p.level();
if(plevel>level)
level=plevel;
}
return level+1;
}
}
[解决办法]
格式看的眼睛痛啊
感觉用递归写比较好看
public int level(TreeNode tn){
if(tn == null){
return 0;
}
return Max(level(tn.left), level(tn.right)) + 1;
}
[解决办法]
建议用邻接表建个图,先找到入度为0的点,即根节点,然后递归搜索邻接表,记录深度,更新最大值就好了
[解决办法]
有更好的结构吗!