Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 树中最小值_Java_Tree_Minimum - Fatal编程技术网

Java 树中最小值

Java 树中最小值,java,tree,minimum,Java,Tree,Minimum,我必须找到树上的最小数。这是我写的,但它不起作用。我必须改变什么才能正常运行?我知道这并不是树上的每一个值。但我不知道该换什么工作 public class MinTree { static Tree tree = new Tree( 24, new Tree( 45, null , new Tree(8, null , null) ) ,

我必须找到树上的最小数。这是我写的,但它不起作用。我必须改变什么才能正常运行?我知道这并不是树上的每一个值。但我不知道该换什么工作

public class MinTree {

    static Tree tree = new Tree( 24, 
                 new Tree( 45, 
                     null , 
                     new Tree(8, null , null) ) , 
                 new Tree ( 17, 
                     new Tree (74 , null , null ) , 
                     null ) );

    public int findMin(Tree tree){
        int min = 99999;
        Tree left, right;
        if(min > tree.getVal())
            min = tree.getVal();
        System.out.println(min + " ");
        if(tree.left() != null)
            return findMin(tree.left());
        if(tree.right() != null)
            return findMin(tree.right());


        return min;
    }

    public static void main(String[] args){
        MinTree mt = new MinTree();
        System.out.println("Minimum is :" + mt.findMin(tree));
        }
}
树类:

class Tree {

   public int obj;
   private int val;
   private Tree left, right;

   public Tree(int val, Tree left, Tree right){
     this.val = val;
     this.left = left;
     this.right = right;
   }

   public int getVal(){
      return val;
   }

   public Tree left(){
      return left;
   }

   public Tree right(){
      return right;
   }
}

现在,它只返回最左边树的最小值

请参见,在函数
findMin(Tree Tree)
中,您声明它必须返回
findMin(Tree.left())
,因为您没有将此值与
min
进行比较,只是返回它

每当函数找到返回码时,它都会返回该值并完成该函数。所以,你应该这样做:

if(tree.left() != null){
  int j = findMin(tree.left());
  if (j<min){
      min = j;
  }
}
if(tree.left()!=null){
int j=findMin(tree.left());

if(jIf)如果右子树中的结果低于左子树中的结果会发生什么?如果当前值低于这两个值会发生什么?如果左树和右树不为null,则需要将
tree.getVal()
与最小值进行比较,并返回最小值(最多)三个值。如果左树的值为非空,则返回左树的值,如果右树的值为非空,则返回右树的值,否则返回当前节点的值。我知道如何在每一侧进行最小值,但不知道如何将它们组合在一起。我尝试了不同的方法,并且没有删除无用的代码:D。感谢帮助。