gpt4 book ai didi

java - 找出两棵树是否有相似的叶子(从左到右)?

转载 作者:行者123 更新时间:2023-12-01 23:41:21 26 4
gpt4 key购买 nike

就我的逻辑而言,我使用两个不同的数组来存储所有叶子,然后比较这些数组以查看叶子是否确实相同,但我的测试用例失败了(例如[3,5 ,1,6,2,9,8,空,空,7,4][3,5,1,6,7,4,2,空,空,空,空,空,空,9,8])。提前致谢!

'''类解决方案{

static int array1[] = new int[50];
static int array2[] = new int[50];
static int q = 0;
static int r = 0;

public boolean compareLeaves(int arr1[], int arr2[])
{
for(int i = 0; i <array1.length ;i ++)
{
if(array1[i] != array2[i])
{
return false;
}
}
return true;
}
public boolean leafSimilar(TreeNode root1, TreeNode root2) {

if(root1 == null || root2 == null)
{
return false;
}

if(root1.left == null && root1.right == null)
{
array1[q] =root1.val ;
q++;
}

if(root2.left == null && root2.right == null)
{
array2[r] =root2.val ;
r++;
}
leafSimilar(root1.left,root2.left);
leafSimilar(root1.right,root2.right);

return compareLeaves(array1,array2);


}

}'''

最佳答案

  1. 如果数组的长度不同,但第一个 array1.length 元素一致,我相信您认为它们相等(返回 true)。您可能需要使用 qr 来确定元素计数是否相同以及要比较的元素数量。
  2. 如果两个根都为 null,我希望树应该被视为相等,但您返回 false
  3. 即使 root1 == null,您仍然应该从 root2 中拾取叶子,反之亦然。
  4. 我认为你应该按顺序遍历,即在之前调用leafSimilar(root1.left,root2.left)查看root1.valroot2.val。这可能并不重要,因为 val 仅考虑叶子,但我发现很难 100% 确定。

我可能错过了一些东西。

使用两个不同的数组来存储所有叶子应该是一个合理的策略。我认为如果单独处理每棵树而不是同时处理两棵树会更容易。

关于java - 找出两棵树是否有相似的叶子(从左到右)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58257744/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com