📜  门| GATE-IT-2004 |问题22(1)

📅  最后修改于: 2023-12-03 14:58:32.898000             🧑  作者: Mango

门| GATE-IT-2004 |问题22

简介

GATE是印度举办的计算机科学和信息技术领域的全国性考试,旨在选拔最优秀的人才进入印度顶尖高校和研究机构。本文将重点介绍GATE-IT-2004考试中的问题22,该问题涉及到编程和算法的知识。

问题描述

问题22要求编写一个程序,实现一个二进制搜索树(Binary Search Tree)。具体要求如下:

  1. 程序需要实现以下几个方法:

    • BST():构造方法,用于创建一棵空的二进制搜索树。
    • insert(int elem):向二进制搜索树中插入一个元素。
    • inorder():按照中序遍历顺序输出二进制搜索树中的元素。
  2. 输入是一系列整数,用空格分隔。以-1作为输入的结束符号。

  3. 程序需要将输入的整数依次插入到二进制搜索树中,并且按照中序遍历的顺序输出二叉搜索树中的元素。

  4. 注意:输入的整数不会重复,且所有整数均大于等于1。

解决方案
class Node {
    int data;
    Node left, right;

    public Node(int item) {
        data = item;
        left = right = null;
    }
}

class BST {
    Node root;

    BST() {
        root = null;
    }

    void insert(int elem) {
        root = insertRec(root, elem);
    }

    private Node insertRec(Node root, int elem) {
        if (root == null) {
            root = new Node(elem);
            return root;
        }

        if (elem < root.data)
            root.left = insertRec(root.left, elem);
        else if (elem > root.data)
            root.right = insertRec(root.right, elem);

        return root;
    }

    void inorder() {
        inorderRec(root);
    }

    private void inorderRec(Node root) {
        if (root != null) {
            inorderRec(root.left);
            System.out.print(root.data + " ");
            inorderRec(root.right);
        }
    }
}

public class Main {
    public static void main(String[] args) {
        BST bst = new BST();
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入一系列整数,以-1作为结束标志:");
        int num = scanner.nextInt();
        while (num != -1) {
            bst.insert(num);
            num = scanner.nextInt();
        }

        System.out.println("中序遍历结果为:");
        bst.inorder();
    }
}
使用方法
  1. 将上述代码保存为一个Java文件,例如BinarySearchTree.java

  2. 使用Java编译器编译代码:javac BinarySearchTree.java

  3. 运行程序:java Main

  4. 按照提示输入一系列整数,以-1作为结束标志。

  5. 程序将输出按中序遍历顺序排序后的整数列表。

总结

本文介绍了GATE-IT-2004考试中的问题22,该问题要求编写一个二进制搜索树,并按照中序遍历的顺序输出树中的元素。通过编写相应的类和方法,可以解决这个问题。以上提供的Java代码是一个简单的示例,可根据实际需求进行修改和扩展。