二进制树来自预订bittring

时间:2011-05-04 13:06:40

标签: java tree binary-tree bitstring

我需要从预先订购的bitstring(通过管道传输到流中的标准输入)构建二叉树,我想知道我对此的理解是否正确。

如果我有一个11110001000的预编程位串(其中1表示内部节点,0表示外部节点),那么会产生这样的二叉树吗?

        1
       / \
      1   0
     / \
    1   1
   / \ / \
  1  00   0
 / \
0   0

从preorder bitstring(通过输入给出)构建二叉树之后,我还需要找到高度,路径长度以及二叉树是否完整。但是我无法前进到能够做到这一点的地步,因为我不知道如何开始实现预编程位串 - > Java中的二叉树转换。任何人都可以提供一些关于我如何开始从预编程位串构建二叉树的提示吗?

2 个答案:

答案 0 :(得分:1)

您可以从here开始。如果你了解c ++,这个article也会很有用。

主要思想是拥有一个Node类,它引用了左边节点和右边节点。然后,您需要做的就是浏览节点。

答案 1 :(得分:1)

您可以从我前一段时间制作的这个简单程序开始,并将其调整为接受二进制字符串作为输入而不是手动输入:

import javax.swing.JOptionPane;

class Node {
    int info;
    Node fs;
    Node fd;
}

class BinaryTree {

    public static void main(String[] args) {

        Node tree = null;
        tree = insertRecursivePreorder(tree);

    }

    static Node insertRecursivePreorder (Node n) {
      String input = JOptionPane.showInputDialog("Insert node, 0 to end: \n");
      int dato = Integer.parseInt(input);

      if (dato == 0) {
          n=null;
      } else {
          n=new Node();
          n.info=dato;
          n.fs=insertRecursivePreorder(n.fs);
          n.fd=insertRecursivePreorder(n.fd);
      }
      return n;
    }

}