java二叉树排序程序
时间: 2023-10-14 17:23:54 浏览: 98
下面是Java实现二叉树排序的示例程序:
```java
import java.util.ArrayList;
import java.util.List;
public class BinaryTreeSort {
private Node root;
/**
* 插入节点
* @param value 节点值
*/
public void insert(int value) {
Node node = new Node(value);
if (root == null) {
root = node;
} else {
Node current = root;
Node parent;
while (true) {
parent = current;
if (value < current.value) {
current = current.left;
if (current == null) {
parent.left = node;
return;
}
} else {
current = current.right;
if (current == null) {
parent.right = node;
return;
}
}
}
}
}
/**
* 中序遍历二叉树
* @return 排序后的节点值列表
*/
public List<Integer> inOrderTraversal() {
List<Integer> result = new ArrayList<>();
inOrderTraversal(root, result);
return result;
}
private void inOrderTraversal(Node node, List<Integer> result) {
if (node != null) {
inOrderTraversal(node.left, result);
result.add(node.value);
inOrderTraversal(node.right, result);
}
}
/**
* 节点类
*/
private static class Node {
int value;
Node left;
Node right;
Node(int value) {
this.value = value;
}
}
public static void main(String[] args) {
BinaryTreeSort tree = new BinaryTreeSort();
tree.insert(5);
tree.insert(2);
tree.insert(8);
tree.insert(1);
tree.insert(3);
tree.insert(7);
tree.insert(9);
List<Integer> result = tree.inOrderTraversal();
System.out.println(result);
}
}
```
该程序中,我们定义了一个`Node`类表示二叉树的节点,以及一个`BinaryTreeSort`类实现二叉树排序的算法。
在`insert()`方法中,我们通过比较节点值的大小,将新节点插入到合适的位置。在`inOrderTraversal()`方法中,我们采用中序遍历的方式遍历二叉树,将节点值存储到列表中,并返回排序后的节点值列表。
最后在`main()`方法中创建了一个二叉树,并对其进行了测试。运行程序,输出结果为`[1, 2, 3, 5, 7, 8, 9]`,说明二叉树排序算法已经正确地将节点值排好序了。
阅读全文