我有一个树形结构,每个节点可以拥有基本上无限的孩子,它可以为博客建立评论。
考虑到特定评论的ID,我试图找出评论在树中的深度/级别。
我关注this guide that explains it for binary trees,但在将其调整为非二叉树时,我遇到了麻烦。
这是我到目前为止的尝试(在Swift中):
func commentLevelRecursive(comment: Comment, commentID: String, currentLevel: Int) -> Int {
if comment.identifier == commentID {
return currentLevel
}
var newLevel = currentLevel
for reply in comment.replies {
newLevel = commentLevelRecursive(reply, commentID: commentID, currentLevel: currentLevel + 1)
}
return newLevel
}
但它总是看似返回1.我认为这是因为newLevel总是从0增加到1然后返回。
有人能给我一些洞察我出错的地方吗?
答案 0 :(得分:1)
二叉树是一种特殊情况,每个节点只有两个子节点。 用于查找节点级别的方法可以扩展到公共树。
这个想法是一样的:
level(P) = max(level(C) for each child node C of P)+1
答案 1 :(得分:0)
int MaxDepth(int x,int parent){
int mx = 0;
for(int i = 0;i < graph[x].size();i++)
if(graph[x][i]!=parent){
mx = max(MaxDepth(graph[x][i],x),mx);
}
return mx + 1;
}