2009-10-15 44 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

使用堆棧跟蹤的「(」和「)」

推所有的「(」壓入堆棧或彈出,當你遇到「)」。

從那裏,你只需要決定如何解釋自己之間的東西。