新建Java文件Tree.java,定义如下数组,例如: data = [5,8,1,9,6,3,2,4,8,7] 2、定义一个二叉树,将数组中每个数字及其在数组中的位置存入二叉树的的叶子结点中,左结点值比父结点小,右结点值比父结点大,生成的二叉树如下: Java机试题二叉树图 3、编译运行Tree.java文件,提示输入一个数字(please input data:),在二叉树中查找其位置: 1)输入1,则提示:data:1 position:3 2)输入8,则提示:data:8 position:2,9 3)输入10,则提示:data:10 not exist
时间: 2024-03-20 20:39:09 浏览: 70
好的,你的问题是如何实现这个Java程序,我将为你解答。
首先,我们需要定义一个节点类,用于表示二叉树的节点。节点类包含三个属性:value,左子节点和右子节点。代码如下:
```java
class Node {
int value;
Node left;
Node right;
public Node(int value) {
this.value = value;
this.left = null;
this.right = null;
}
}
```
接下来,我们需要定义一个二叉树类,用于操作二叉树。二叉树类包含一个根节点属性和三个方法:插入节点、查找节点和打印节点。插入节点方法用于将数组中的每个数字插入到二叉树中,查找节点方法用于在二叉树中查找指定的数字,打印节点方法用于按照中序遍历的方式打印出二叉树中的所有节点。代码如下:
```java
class BinaryTree {
Node root;
public void insert(int value, int position) {
Node node = new Node(value);
if (root == null) {
root = node;
} else {
Node current = root;
while (true) {
if (value < current.value) {
if (current.left == null) {
current.left = node;
break;
} else {
current = current.left;
}
} else if (value > current.value) {
if (current.right == null) {
current.right = node;
break;
} else {
current = current.right;
}
} else {
break;
}
}
}
}
public void find(int value) {
Node current = root;
String positions = "";
int position = 1;
while (current != null) {
if (value < current.value) {
current = current.left;
position = position * 2;
} else if (value > current.value) {
current = current.right;
position = position * 2 + 1;
} else {
positions += position + ",";
current = current.right;
position = position * 2 + 1;
}
}
if (positions.equals("")) {
System.out.println("data:" + value + " not exist");
} else {
System.out.println("data:" + value + " position:" + positions.substring(0, positions.length() - 1));
}
}
public void print(Node node) {
if (node != null) {
print(node.left);
System.out.print(node.value + " ");
print(node.right);
}
}
}
```
最后,我们需要在主函数中实现输入、插入、查找和打印操作。代码如下:
```java
import java.util.Scanner;
public class Tree {
public static void main(String[] args) {
int[] data = {5, 8, 1, 9, 6, 3, 2, 4, 8, 7};
BinaryTree binaryTree = new BinaryTree();
for (int i = 0; i < data.length; i++) {
binaryTree.insert(data[i], i + 1);
}
System.out.print("请输入一个数字(please input data:):");
Scanner scanner = new Scanner(System.in);
int value = scanner.nextInt();
binaryTree.find(value);
System.out.print("中序遍历结果为:");
binaryTree.print(binaryTree.root);
}
}
```
这样,我们就实现了该Java程序,可以按照题目的要求进行输入、插入、查找和打印操作。
阅读全文