java写二叉树的代码
时间: 2023-12-10 13:21:59 浏览: 60
用Java编写的二叉树代码
下面是一个简单的Java二叉树的实现代码:
```java
public class BinaryTree {
private Node root;
private class Node {
private int data;
private Node left;
private Node right;
public Node(int data) {
this.data = data;
left = null;
right = null;
}
}
public BinaryTree() {
root = null;
}
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 delete(int data) {
root = delete(root, data);
}
private Node delete(Node node, int data) {
if (node == null) {
return null;
} else if (data < node.data) {
node.left = delete(node.left, data);
} else if (data > node.data) {
node.right = delete(node.right, data);
} else {
if (node.left == null && node.right == null) {
node = null;
} else if (node.left == null) {
node = node.right;
} else if (node.right == null) {
node = node.left;
} else {
Node temp = findMin(node.right);
node.data = temp.data;
node.right = delete(node.right, temp.data);
}
}
return node;
}
private Node findMin(Node node) {
while (node.left != null) {
node = node.left;
}
return node;
}
public void printInorder() {
printInorder(root);
}
private void printInorder(Node node) {
if (node == null) {
return;
}
printInorder(node.left);
System.out.print(node.data + " ");
printInorder(node.right);
}
}
```
这个实现中包含了二叉树的基本操作,包括插入、查找、删除和中序遍历。其中,insert方法使用递归实现节点的插入,search方法使用递归实现节点的查找,delete方法使用递归实现节点的删除,printInorder方法使用递归实现中序遍历。
阅读全文