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。感谢帮助。