树,节点的值刚好大于给定的n

时间:2016-04-19 11:03:44

标签: tree

给出一棵树和一个数字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;

}

1 个答案:

答案 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;

}