动态二进制树形搜索算法Java编程实现
时间: 2023-09-05 10:11:27 浏览: 42
以下是一个简单的Java代码实现动态二进制树形搜索算法:
```java
class DynamicBinaryTree {
private Node root;
private class Node {
private int data;
private Node left;
private Node right;
public Node(int data) {
this.data = data;
this.left = null;
this.right = null;
}
}
public DynamicBinaryTree() {
root = null;
}
public void insert(int data) {
if (root == null) {
root = new Node(data);
return;
}
Node current = root;
while (true) {
if (data < current.data) {
if (current.left == null) {
current.left = new Node(data);
return;
}
current = current.left;
} else {
if (current.right == null) {
current.right = new Node(data);
return;
}
current = current.right;
}
}
}
public boolean search(int data) {
Node current = root;
while (current != null) {
if (data == current.data) {
return true;
} else if (data < current.data) {
current = current.left;
} else {
current = current.right;
}
}
return false;
}
}
```
在代码中,我们定义了一个 `Node` 类表示二叉树的节点,其中包含了数据、左子树和右子树的引用。我们还定义了一个 `DynamicBinaryTree` 类,其中包含了插入数据和搜索数据的方法。
在插入数据时,我们首先判断根节点是否为空,如果为空,则将该节点作为根节点插入。如果根节点不为空,则从根节点开始搜索,如果待插入数据小于当前节点的数据,则继续搜索其左子树,否则继续搜索其右子树,直到找到一个空节点为止,然后将该节点插入到对应的位置。
在搜索数据时,我们从根节点开始搜索,如果待查找数据等于当前节点的数据,则返回 true。否则,如果待查找数据小于当前节点的数据,则继续搜索其左子树,否则继续搜索其右子树,直到找到一个空节点为止,表示没有找到该数据,返回 false。