java二叉树
时间: 2023-08-30 17:05:47 浏览: 83
二叉树是一种非常常见的数据结构,在 Java 中可以使用类来实现二叉树的各种操作。下面是一个简单的二叉树类的实现:
```
public class BinaryTree {
private Node root;
private class Node {
int data;
Node left;
Node right;
Node(int data) {
this.data = data;
}
}
public void insert(int data) {
root = insert(root, data);
}
private Node insert(Node node, int data) {
if (node == null) {
node = new Node(data);
} else if (data < node.data) {
node.left = insert(node.left, data);
} else {
node.right = insert(node.right, data);
}
return node;
}
public boolean search(int data) {
return search(root, data);
}
private boolean search(Node node, int data) {
if (node == null) {
return false;
} else if (node.data == data) {
return true;
} else if (data < node.data) {
return search(node.left, data);
} else {
return search(node.right, data);
}
}
public void inorder() {
inorder(root);
}
private void inorder(Node node) {
if (node != null) {
inorder(node.left);
System.out.print(node.data + " ");
inorder(node.right);
}
}
public void preorder() {
preorder(root);
}
private void preorder(Node node) {
if (node != null) {
System.out.print(node.data + " ");
preorder(node.left);
preorder(node.right);
}
}
public void postorder() {
postorder(root);
}
private void postorder(Node node) {
if (node != null) {
postorder(node.left);
postorder(node.right);
System.out.print(node.data + " ");
}
}
}
```
在这个实现中,`Node` 是一个私有类,它有三个属性:`data` 表示节点的值,`left` 和 `right` 分别表示节点的左右子树。`BinaryTree` 类有一个 `root` 属性,表示二叉树的根节点。`insert()` 方法用于插入一个节点,`search()` 方法用于查找一个节点,`inorder()`、`preorder()` 和 `postorder()` 方法分别用于遍历二叉树的中序、前序和后序。
阅读全文