在树中搜索最小值
要找到一棵树(没有子节点)的最小值,请比较左节点和右节点并获取较大的值(将其存储在max中),然后将其与根的值进行比较。
如果结果 (min) 更小,则它是最小值;否则,根是树的最小值。
要获得整个二叉树的最小值,请获取左子树的最小值、右子树的最小值和根。现在比较这三个值,这三个值中最小的值就是树的最小值。
示例
class Node{
int data;
Node leftNode, rightNode;
Node() {
leftNode = null;
rightNode = null;
this.data = data;
}
Node(int data) {
leftNode = null;
rightNode = null;
this.data = data;
}
int getData() {
return this.data;
}
Node getleftNode() {
return this.leftNode;
}
Node getRightNode() {
return this.leftNode;
}
void setData(int data) {
this.data = data;
}
void setleftNode(Node leftNode) {
this.leftNode = leftNode;
}
void setRightNode(Node rightNode) {
this.leftNode = rightNode;
}
}
public class MinValueInBinaryTree {
public static void main(String[] args) {
Node node = new Node(50);
node.leftNode = new Node(60);
node.leftNode.leftNode = new Node(45);
node.leftNode.rightNode = new Node(64);
node.rightNode = new Node(60);
node.rightNode.leftNode = new Node(45);
node.rightNode.rightNode = new Node(64);
System.out.println("Minimum value is "+minimumValue(node));
}
public static int minimumValue(Node root) {
int min = 10000;
if(root!=null) {
int lMin = minimumValue(root.leftNode);
int rMin = minimumValue(root.rightNode);;
if(lMin>rMin) {
min = lMin;
} else {
min = rMin;
}
if(root.data<min) {
min = root.data;
}
}
return min;
}
}
输出
Minimum value is 50
广告