android Java写一些二叉树
时间: 2023-08-08 09:05:56 浏览: 57
好的,下面是一个简单的二叉树的 Java 实现:
```java
class Node {
int key;
Node left, right;
public Node(int item) {
key = item;
left = right = null;
}
}
class BinaryTree {
Node root;
BinaryTree() {
root = null;
}
// 插入节点
void insert(int key) {
root = insertRecursive(root, key);
}
// 递归插入节点
Node insertRecursive(Node root, int key) {
if (root == null) {
root = new Node(key);
return root;
}
if (key < root.key) {
root.left = insertRecursive(root.left, key);
} else if (key > root.key) {
root.right = insertRecursive(root.right, key);
}
return root;
}
// 中序遍历
void inorder() {
inorderRecursive(root);
}
// 递归中序遍历
void inorderRecursive(Node root) {
if (root != null) {
inorderRecursive(root.left);
System.out.print(root.key + " ");
inorderRecursive(root.right);
}
}
// 删除节点
void delete(int key) {
root = deleteRecursive(root, key);
}
// 递归删除节点
Node deleteRecursive(Node root, int key) {
if (root == null) {
return root;
}
if (key < root.key) {
root.left = deleteRecursive(root.left, key);
} else if (key > root.key) {
root.right = deleteRecursive(root.right, key);
} else {
if (root.left == null) {
return root.right;
} else if (root.right == null) {
return root.left;
}
root.key = minValue(root.right);
root.right = deleteRecursive(root.right, root.key);
}
return root;
}
// 查找最小值
int minValue(Node root) {
int minv = root.key;
while (root.left != null) {
minv = root.left.key;
root = root.left;
}
return minv;
}
public static void main(String[] args) {
BinaryTree tree = new BinaryTree();
tree.insert(50);
tree.insert(30);
tree.insert(20);
tree.insert(40);
tree.insert(70);
tree.insert(60);
tree.insert(80);
System.out.println("中序遍历:");
tree.inorder();
System.out.println("\n删除节点 20:");
tree.delete(20);
System.out.println("中序遍历:");
tree.inorder();
System.out.println("\n删除节点 30:");
tree.delete(30);
System.out.println("中序遍历:");
tree.inorder();
System.out.println("\n删除节点 50:");
tree.delete(50);
System.out.println("中序遍历:");
tree.inorder();
}
}
```
这个二叉树实现包括了节点的插入、中序遍历和删除操作。你可以根据需求修改相应的代码。