我正在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;
}





任何帮助将不胜感激!

最佳答案

如果当前节点匹配,您将停止搜索。如果不同,则向左和向右检查,但在比赛中返回一个。

10-08 07:39