Java 程序生成二进制数

17 Mar 2025 | 4 分钟阅读

在本节中,我们将创建 Java 程序,用于从指定范围(0 到 n)生成二进制数

1 到 n 生成二进制数可以通过二叉树实现。我们知道在树中,每个节点都有两个子节点,即右节点和左节点。在这棵二叉树中,根节点将是 1。为了获得根节点的左右子节点,我们将在根节点末尾分别附加 0 和 1,依此类推。考虑以下二叉树。

Java Program to Generate Binary Numbers

让我们遵循以下步骤来生成二进制数。

  1. 创建一个 String 类型的队列。
  2. 将一个变量 n 初始化为 0。
  3. 将 1 推送到队列,因为它是根节点。
  4. 当总数小于 n 时,重复步骤 6 和 7。
  5. 从队列中弹出根元素并打印。
  6. 将它的左子节点(元素 + 0)和右子节点(元素 + 1)推送到队列。
  7. 将变量 total 增加 1。

在 Java 程序中实现上述方法。

GenerateBinaryNumbers.java

输出

1 10 11 100 101 110 111 
1 10 11 100 101 110 111 1000 1001 1010

让我们看看相同的另一个逻辑。

从 1 到 n 运行一个循环。在循环内,调用十进制到二进制的转换。

  • 创建一个空的 String 类型队列。
  • 将 1 添加到队列中,作为第一个二进制数。
  • 将第一个二进制数 1 入队。
  • 运行一个循环来生成和打印 n 个二进制数。
    1. 从队列中出队并打印队列的front。
    2. 通过在第一个二进制数后附加 0 来入队第二个二进制数。
    3. 通过在第一个二进制数后附加 1 来入队第三个二进制数。

该解决方案的时间和空间复杂度为 O(n)。

Java 程序生成高达 n 的二进制数

使用队列

GenerateBinaryNumbers.java

输出

1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110

让我们看另一种逻辑。

在下面的 Java 程序中,我们没有使用任何数据结构。而是使用了 itoa() 函数。该函数将整数转换为以 null 结尾的字符串。它也可以转换负数。

  1. 初始化要生成二进制数的上限值。
  2. 找到模数并将余数存储在数组中,然后将数字除以 2。
  3. 重复以上步骤,直到数字小于或等于零。
  4. 从末尾打印数组以获得等效的二进制数。

GenerateBinaryNumbers.java

输出

0 1 10 11 100 101 110 111 1000 1001 1010