2009-10-15 43 views
0

我想基于这样的字符串填充二叉树。如何从一个字符串填充二叉树,java

[int](LT)(RT) 

LT表示树的左侧部分是相同的形式。和RT一样。有效的字符串应该是这样的:4(2(1)(3))(6(5)(7)。我如何填充这棵树?这不是任何种类的排序树。所以它可以用节点填充每个“级别”。谢谢你的帮助。

+0

这只是我作业的最后部分,主要部分是创建树的实现。然后制定一个查找和返回最大独立节点集的算法。我认为这部分会很容易,但我觉得这很难。 – Algific 2009-10-15 22:07:58

回答

2

您必须为此创建一个解析器,并使用解析器的指令填充某种数据结构。

然后,当您的数据结构填充时,您只需将其推入树中。

沿着东西线:

Structure s = Parser.parse("4(2(1)(3))(6(5)(7)"); 

然后遍历结构。

Tree binaryTree = ... 

    for(Instruction i : s) { 

     if(i.leaf == Tree.LEFT) { 
      tree.addLeft(i.value); 
     } else if (i.leaf == Tree.RIGHT) { 
      tree.addRight(i.value); 
     } 
    } 
+0

:-O ............ – OscarRyz 2009-10-15 22:55:37

0

抓住字符串的第一个数字,分割'(',去掉尾部的')',递归地重复。

+0

我会测试一下。 – Algific 2009-10-15 22:03:23

0

使用堆栈跟踪的“(”和“)”

推所有的“(”压入堆栈或弹出,当你遇到“)”。

从那里,你只需要决定如何解释自己之间的东西。