我正在Practice-It上尝试使用此problem,但已经有一段时间了。
编写一个match方法,该方法返回一棵树中与另一棵树中的节点匹配的节点数的计数。匹配定义为一对节点,它们在两棵树中相对于它们的总根位于相同的位置,并且存储相同的数据。
到目前为止,我已经尝试了以下方法,但是我还没有得到想要的计数,而且我不确定为什么。
public int matches(IntTree t2)
{
return match(overallRoot, t2.overallRoot);
}
public int match(IntTreeNode tree1, IntTreeNode tree2)
{
if(tree1 == null && tree2 == null)
return 1;
if(tree1 == null || tree2 == null)
return 0;
if(tree1.data == tree2.data)
return 1;
int left = match(tree1.left, tree2.left);
int right = match(tree1.right, tree2.right);
return left + right;
}
任何帮助将不胜感激!
最佳答案
如果当前节点匹配,您将停止搜索。如果不同,则向左和向右检查,但在比赛中返回一个。