用遞歸求二叉樹的最大值和最小值。
package test;
class BinaryTreeNode {
private int value;
private BinaryTreeNode left;
private BinaryTreeNode right;
public BinaryTreeNode() {
}
public BinaryTreeNode(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public BinaryTreeNode getLeft() {
return left;
}
public void setLeft(BinaryTreeNode left) {
this.left = left;
}
public BinaryTreeNode getRight() {
return right;
}
public void setRight(BinaryTreeNode right) {
this.right = right;
}
}
public class test {
int max = 0;
int min = 0;
public void Print(BinaryTreeNode tNode) {
BinaryTreeNode node = tNode;
if(node != null) {
max = node.getValue();
min = max;
}else {
System.out.println(0);
return;
}
find(node);
System.out.print(max-min);
}
public void find(BinaryTreeNode node) {
if(max < node.getValue())
max = node.getValue();
if(min > node.getValue())
min = node.getValue();
if(node.getLeft() != null)
find(node.getLeft());
if(node.getRight() != null)
find(node.getRight());
}
public static void main(String[] args) {
BinaryTreeNode node1 = new BinaryTreeNode(1);
BinaryTreeNode node2 = new BinaryTreeNode(2);
BinaryTreeNode node3 = new BinaryTreeNode(3);
BinaryTreeNode node4 = new BinaryTreeNode(4);
BinaryTreeNode node5 = new BinaryTreeNode(5);
BinaryTreeNode node6 = new BinaryTreeNode(6);
BinaryTreeNode node7 = new BinaryTreeNode(7);
node1.setLeft(node2);
node1.setRight(node3);
node2.setLeft(node4);
node2.setRight(node5);
node3.setLeft(node6);
node3.setRight(node7);
test test1 = new test();
test1.Print(node1);
}
}