1、新建Java文件Tree.java,定义如下数组,例如: data = [5,8,1,9,6,3,2,4,8,7] 2、定义一个二叉树,将数组中每个数字及其在数组中的位置存入二叉树的的叶子结点中,左结点值比父结点小,右结点值比父结点大 3、编译运行Tree.java文件,提示输入一个数字(please input data:),在二叉树中查找其位置: 1)输入1,则提示: data:1 position:3 2)输入8,则提示: data:8 position:2,93)输入10,则提示: data:10 not exist
时间: 2024-03-20 20:45:01 浏览: 62
好的,让我来逐步解答你的问题:
1. 首先,我们需要定义一个Java文件Tree.java,并在其中定义一个整型数组data,代码如下:
```java
public class Tree {
private int[] data = {5,8,1,9,6,3,2,4,8,7};
//定义二叉树
//...
//在这里定义二叉树的代码
}
```
2. 接下来,我们需要定义一个二叉树,并将数组中的每个数字及其在数组中的位置存入二叉树的叶子结点中。左结点的值比父结点小,右结点的值比父结点大。代码如下:
```java
class TreeNode {
int data; // 数组中的元素值
int position; // 数组中元素的位置
TreeNode left; // 左子节点
TreeNode right; // 右子节点
public TreeNode(int data, int position) {
this.data = data;
this.position = position;
this.left = null;
this.right = null;
}
}
public class Tree {
private int[] data = {5,8,1,9,6,3,2,4,8,7};
private TreeNode root; // 树的根节点
public Tree() {
root = null;
for (int i = 0; i < data.length; i++) {
insert(data[i], i);
}
}
// 插入节点
public void insert(int data, int position) {
root = insert(root, data, position);
}
private TreeNode insert(TreeNode node, int data, int position) {
if (node == null) {
node = new TreeNode(data, position);
} else {
if (data < node.data) {
node.left = insert(node.left, data, position);
} else {
node.right = insert(node.right, data, position);
}
}
return node;
}
}
```
3. 最后,我们需要在主函数中编写代码,提示用户输入一个数字,查找它在二叉树中的位置。如果存在,则输出其位置;如果不存在,则输出“not exist”。代码如下:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Tree tree = new Tree();
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.print("please input data:");
int data = scanner.nextInt();
TreeNode node = find(tree.root, data);
if (node != null) {
System.out.println("data:" + data + " position:" + node.position);
} else {
System.out.println("data:" + data + " not exist");
}
}
}
// 查找节点
public static TreeNode find(TreeNode node, int data) {
if (node == null) {
return null;
}
if (node.data == data) {
return node;
} else if (data < node.data) {
return find(node.left, data);
} else {
return find(node.right, data);
}
}
}
```
好了,以上就是我对你提出的问题的解答。请试着运行这个程序,看看是否能够正确的输出结果。
阅读全文