给出一棵树和一个数字n。在树中找到下一个更大的元素,即找到一个值大于n的节点?我想找一个recursive solution
给它......
这是树
1
/ | \
2 5 3
/
4
所以,如果n = 2的值那么答案应该是3,因为它只是大于2.
这是代码......但是它返回了错误答案,控制台上显示了一些随机值
public static int nextLargest(TreeNode<Integer> root, int n){
if(root==null)
return 0;
int nextlargest= Integer.MAX_VALUE;
for(TreeNode<Integer> child:root.children){
int childAns= nextLargest(child, n);
if(childAns > n && childAns < nextlargest)
nextlargest=childAns;
}
return nextlargest;
}
答案 0 :(得分:0)
所以,我错过了一个
的条件 if(root.data>n && root.data < nextlargest)
return root.data;
所以在添加之后代码变成了......
public static int nextLargest(TreeNode<Integer> root, int n){
if(root==null)
return 0;
int nextlargest= Integer.MAX_VALUE;
for(TreeNode<Integer> child:root.children){
int childAns= nextLargest(child, n);
if(childAns > n && childAns < nextlargest)
nextlargest=childAns;
}
if(root.data>n && root.data < nextlargest)
return root.data;
return nextlargest;
}