用 java 写一个:定义一个数组,再定义一个二叉树,把数组里的数字及其位置存入二叉树的的叶子结点中,左结点值比父结点小,右结点值比父结点大,生成的二叉树, 提示输入一个数字(please input data:),在二叉树中查找其位置
时间: 2023-04-03 20:02:39 浏览: 147
好的,这是一个关于编程的问题。首先,我们需要定义一个数组和一个二叉树。然后,我们将数组中的数字及其位置存入二叉树的叶子结点中,确保左结点值比父结点小,右结点值比父结点大。最后,我们可以提示用户输入一个数字,并在二叉树中查找其位置。
以下是 Java 代码示例:
```
import java.util.Scanner;
class Node {
int data;
Node left, right;
public Node(int data) {
this.data = data;
left = right = null;
}
}
public class BinaryTree {
Node root;
public BinaryTree(int[] arr) {
root = null;
for (int i = 0; i < arr.length; i++) {
root = insert(root, arr[i], i);
}
}
public Node insert(Node node, int data, int index) {
if (node == null) {
node = new Node(data);
} else if (data < node.data) {
node.left = insert(node.left, data, index);
} else {
node.right = insert(node.right, data, index);
}
return node;
}
public void inorderTraversal(Node node) {
if (node != null) {
inorderTraversal(node.left);
System.out.print(node.data + "[" + node.index + "]" + " ");
inorderTraversal(node.right);
}
}
public Node search(Node node, int data) {
if (node == null || node.data == data) {
return node;
}
if (data < node.data) {
return search(node.left, data);
} else {
return search(node.right, data);
}
}
public static void main(String[] args) {
int[] arr = {5, 3, 7, 1, 4, 6, 8};
BinaryTree tree = new BinaryTree(arr);
System.out.print("请输入一个数字:");
Scanner scanner = new Scanner(System.in);
int data = scanner.nextInt();
Node node = tree.search(tree.root, data);
if (node != null) {
System.out.println("该数字的位置为:" + node.index);
} else {
System.out.println("该数字不存在!");
}
}
}
```
希望这个代码示例能够帮助你解决问题。
阅读全文