2011-05-04 26 views
0

我需要建立一个二进制树从一个预序bitstring(这是管道输入到流中的标准输入),我想知道如果我的理解是正确的。二进制树从预序bitstring

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

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

建设从序位串二叉树(这是通过输入给定)后,我还需要找到的高度,路径长度和二叉树是否完整与否。然而,我很难完成这项工作,因为我不知道如何开始在Java中实现前序bitstring - >二叉树转换。任何人都可以提供一些关于如何开始从前序位串创建二叉树的提示吗?

回答

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; 
    } 

} 
1

您可以从here开始。如果你知道C++,这个article也会有用。

主要想法是有一个节点类,它具有对左侧和右侧节点的引用。然后,您需要做的就是浏览节点。