我正在尝试解决以下问题: 我必须创建一个函数,它接收树和两个数字(两个不同节点的值),并找出这两个节点是否在同一级别,但它们没有相同的父级。
这是我的代码。你知道我怎么解决它吗?
int level(Tree tree, int val, int lev)
{
if(tree == NULL) return 0;
if(tree->value == val) return lev;
int l=level(tree->left,tree->value,lev+1);
if(l!=0) return l;
return level(tree->right,tree->value,lev+1);
}
int isCousin(Tree tree, int value1, int value2) {
if((level(tree,value1,1)==level(tree,value2,1)) && !(isCousin(tree,value1,value2)))
return 1;
else return 0;
}
答案 0 :(得分:0)
一种简单的方法是创建一个函数,在树上搜索某个值并返回元素的深度,如果它不存在则返回-1。有了这个为这两个值强制转换的函数,如果它们都返回相同的深度,那么你就知道至少那些数字存在于同一级别的树中。考虑到所有你需要做的就是达到一个,你可以用θ(log2(n))来做,因为它是一棵树,然后检查它的兄弟是否是另一个值:如果是,那么如果不是它们就是兄弟表兄弟。 这不是最有效的方法,但它是解决问题的简单方法。希望它有帮助:)