用 java 写一个:定义一个数组,再定义一个二叉树,把数组里的数字及其位置存入二叉树的的叶子结点中,左结点值比父结点小,右结点值比父结点大,生成的二叉树, 提示输入一个数字(please input data:),在二叉树中查找其位置
时间: 2024-03-12 09:44:11 浏览: 58
好的,我来写一个简单的 Java 代码来实现你的需求:
```java
import java.util.Scanner;
class TreeNode {
int val;
TreeNode left;
TreeNode right;
public TreeNode(int val) {
this.val = val;
this.left = null;
this.right = null;
}
}
public class BinaryTree {
private TreeNode root;
public void insert(int val) {
if (root == null) {
root = new TreeNode(val);
return;
}
TreeNode curr = root;
while (true) {
if (val <= curr.val) {
if (curr.left == null) {
curr.left = new TreeNode(val);
return;
}
curr = curr.left;
} else {
if (curr.right == null) {
curr.right = new TreeNode(val);
return;
}
curr = curr.right;
}
}
}
public TreeNode search(int val) {
TreeNode curr = root;
while (curr != null) {
if (val == curr.val) {
return curr;
} else if (val < curr.val) {
curr = curr.left;
} else {
curr = curr.right;
}
}
return null;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
BinaryTree tree = new BinaryTree();
int[] nums = {5, 3, 8, 1, 4, 7, 9};
for (int num : nums) {
tree.insert(num);
}
System.out.print("Please input data: ");
int val = scanner.nextInt();
TreeNode node = tree.search(val);
if (node == null) {
System.out.println("Not found.");
} else {
System.out.println("Found at node " + node.val);
}
}
}
```
这个程序定义了一个 `TreeNode` 类来表示二叉树的结点,以及一个 `BinaryTree` 类来表示二叉树本身。在 `main` 函数里面,我们先创建了一个 `BinaryTree` 对象,然后将数组 `{5, 3, 8, 1, 4, 7, 9}` 中的数字插入到二叉树中。接着,程序提示用户输入一个数字,并调用 `search` 函数在二叉树中查找该数字。如果找到了,程序输出该数字所在的结点的值;否则,程序输出 "Not found."。
阅读全文