Java实现二叉树的封装
时间: 2023-05-12 17:04:03 浏览: 79
二叉树的封装可以通过定义一个节点类来实现,节点类包含左右子节点和节点值等属性。然后定义一个二叉树类,包含根节点和相关的操作方法,比如插入节点、删除节点、遍历等。以下是一个简单的Java实现二叉树的封装的示例代码:
```
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
public class BinaryTree {
private TreeNode root;
public void insert(int val) {
root = insert(root, val);
}
private TreeNode insert(TreeNode node, int val) {
if (node == null) {
return new TreeNode(val);
}
if (val < node.val) {
node.left = insert(node.left, val);
} else if (val > node.val) {
node.right = insert(node.right, val);
}
return node;
}
public void delete(int val) {
root = delete(root, val);
}
private TreeNode delete(TreeNode node, int val) {
if (node == null) {
return null;
}
if (val < node.val) {
node.left = delete(node.left, val);
} else if (val > node.val) {
node.right = delete(node.right, val);
} else {
if (node.left == null) {
return node.right;
} else if (node.right == null) {
return node.left;
}
TreeNode minNode = findMin(node.right);
node.val = minNode.val;
node.right = delete(node.right, minNode.val);
}
return node;
}
private TreeNode findMin(TreeNode node) {
while (node.left != null) {
node = node.left;
}
return node;
}
public void inorderTraversal() {
inorderTraversal(root);
}
private void inorderTraversal(TreeNode node) {
if (node == null) {
return;
}
inorderTraversal(node.left);
System.out.print(node.val + " ");
inorderTraversal(node.right);
}
}
```
使用示例:
```
BinaryTree tree = new BinaryTree();
tree.insert(5);
tree.insert(3);
tree.insert(7);
tree.insert(1);
tree.insert(9);
tree.inorderTraversal(); // 输出 1 3 5 7 9
tree.delete(3);
tree.inorderTraversal(); // 输出 1 5 7 9
```
注意:这只是一个简单的示例,实际应用中可能需要更多的操作方法和属性。