二叉排序树(顺序和链式)java代码
时间: 2024-10-19 17:17:57 浏览: 53
25.二叉查找树.wmv(目前数据结构最好的视频,共42集,需要哪一集的知识自己下,一集3积分)
二叉排序树(Binary Search Tree,BST)是一种特殊的二叉树,其中每个节点的值大于其左子树中所有节点的值,并小于其右子树中所有节点的值。这里分别给出基于顺序存储(数组)和链接结构(链表)的简单Java代码示例。
**1. 顺序存储(基于数组)的二叉搜索树:**
```java
public class ArrayBST {
int[] tree;
int size;
// 插入操作省略...
// 查找节点
public boolean search(int key) {
for (int i = 0; i < size && tree[i] != key; i++) {
if (key < tree[i])
return false; // 如果当前元素大于目标,在左侧继续查找
else
continue; // 否则在右侧查找
}
return i < size; // 如果找到等于key的位置,返回true,否则false
}
// 其他方法如删除、遍历等省略...
}
```
**2. 链式存储(基于链表)的二叉搜索树:**
```java
public class ListNode {
int val;
ListNode left;
ListNode right;
ListNode(int x) { val = x; }
}
public class LinkedBST {
private ListNode root;
// 插入操作
public void insert(int key) {
root = insertRec(root, key);
}
private ListNode insertRec(ListNode node, int key) {
if (node == null) {
return new ListNode(key);
} else if (key < node.val) {
node.left = insertRec(node.left, key);
} else {
node.right = insertRec(node.right, key);
}
return node;
}
// 查找节点
public boolean search(int key) {
return searchRec(root, key);
}
private boolean searchRec(ListNode node, int key) {
if (node == null || node.val == key)
return node != null;
else if (key < node.val)
return searchRec(node.left, key);
else
return searchRec(node.right, key);
}
// 删除、遍历等其他方法省略...
}
```
阅读全文