计算树上的匹配节点

问题描述 投票:0回答:1

我正在Practice-It上尝试使用此problem,但是已经有一段时间困扰了它。

写入一个方法匹配项,该方法返回一棵树中与另一棵树中的节点匹配的节点数的计数。匹配定义为一对节点,它们在两棵树中相对于其总根位于相同的位置,并且存储相同的数据。

到目前为止,我在下面尝试了以下方法,但是我还没有得到想要的计数,我不确定为什么。

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; 
}

任何帮助将不胜感激!

java tree binary-tree binary-search-tree
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.