写一个二叉树排序,用java语言
时间: 2023-12-29 22:17:22 浏览: 74
以下是一个使用 Java 语言实现的二叉树排序示例代码。在这个示例中,我们创建了一个 TreeNode 类来表示二叉树的节点,其中包括节点的值、左子节点和右子节点。我们还创建了一个 BinarySearchTree 类来表示二叉搜索树,其中包括插入节点、查找节点和中序遍历等操作。
```java
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
public class BinarySearchTree {
private TreeNode root;
public void insert(int val) {
root = insert(root, val);
}
private TreeNode insert(TreeNode node, int val) {
if (node == null) {
node = new TreeNode(val);
}
else if (val < node.val) {
node.left = insert(node.left, val);
}
else if (val > node.val) {
node.right = insert(node.right, val);
}
return node;
}
public boolean find(int val) {
return find(root, val);
}
private boolean find(TreeNode node, int val) {
if (node == null) {
return false;
}
else if (val == node.val) {
return true;
}
else if (val < node.val) {
return find(node.left, val);
}
else {
return find(node.right, val);
}
}
public void inorderTraversal() {
inorderTraversal(root);
}
private void inorderTraversal(TreeNode node) {
if (node != null) {
inorderTraversal(node.left);
System.out.print(node.val + " ");
inorderTraversal(node.right);
}
}
}
// 测试
public class Main {
public static void main(String[] args) {
BinarySearchTree tree = new BinarySearchTree();
tree.insert(4);
tree.insert(2);
tree.insert(7);
tree.insert(1);
tree.insert(3);
tree.insert(6);
tree.insert(9);
System.out.println("中序遍历结果:");
tree.inorderTraversal();
System.out.println("\n是否包含 5:");
System.out.println(tree.find(5));
}
}
```
在上面的示例中,我们创建了一个 BinarySearchTree 对象,向其中插入了一些节点,并进行了中序遍历,输出了结果。我们还使用 find 方法查找了树中是否包含值为 5 的节点。
阅读全文