【发布时间】:2020-03-08 13:50:44
【问题描述】:
我在 Practice-It 上尝试这个 problem,但已经有一段时间遇到问题了。
编写一个方法matches,它返回一个树中与另一棵树中的节点匹配的节点数。匹配被定义为在两棵树中相对于它们的总根位于相同位置并且存储相同数据的一对节点。
到目前为止,我已经尝试了以下方法,但我并没有完全得到我想要的计数,而且我不太确定为什么。
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;
}
任何帮助将不胜感激!
【问题讨论】:
-
你为什么认为空树 (
null) 是相等的?另外,当两个树节点具有相同的数据时,为什么要返回,即使它们的子树可能有更多匹配项?
标签: java tree binary-tree binary-search-tree