</pre><pre name="code" class="java">public class Tree {
private Node root;
public Tree() {
root = null;
}
public static void main(String[] args) {
int a[] = { 2, 5, 6, 1, 9, 6, 3, 8, 4, 7 };
Tree tree = new Tree();
for (int i = 0; i < a.length; i++) {
tree.createTree(tree.root, a[i]);
}
tree.inOrder(tree.root);//前序
System.out.println();
tree.preOrder(tree.root);//中序
System.out.println();
tree.postOrder(tree.root);//后序
System.out.println();
int bin = tree.maxMinDiff();//最大值与最小值的差
System.out.println(bin);
}
// 求二叉树最大值与最小值的差;
public int maxMinDiff() {
int max = root.data;
int min = root.data;
if (root == null) {
return 0;
}
Node node = root.lchild;
while (node != null) {
if (node.data < min) {
min = node.data;
}
node = node.lchild;
}
node = root.rchild;
while (node != null) {
if (node.data > max) {
max = node.data;
}
node = node.rchild;
}
return (max - min);
}
public void createTree(Node node, int data) {
if (root == null) {
root = new Node(data);
} else if (data < node.data) {
if (node.lchild == null) {
node.lchild = new Node(data);
} else {
createTree(node.lchild, data);
}
} else {
if (node.rchild == null) {
node.rchild = new Node(data);
} else {
createTree(node.rchild, data);
}
}
}
public void preOrder(Node node) {
if (node != null) {
System.out.print(node.data);
preOrder(node.lchild);
preOrder(node.rchild);
}
}
public void inOrder(Node node) {
if (node != null) {
inOrder(node.lchild);
System.out.print(node.data);
inOrder(node.rchild);
}
}
public void postOrder(Node node) {
if (node != null) {
inOrder(node.lchild);
inOrder(node.rchild);
System.out.print(node.data);
}
}
class Node {
private int data;
private Node lchild;
private Node rchild;
public Node(int data) {
this.data = data;
this.lchild = null;
this.rchild = null;
}
}
}
二叉树的创建 前序 中序 后序遍历以及最大值与最小值的差
最新推荐文章于 2021-08-04 11:25:08 发布