2014-02-17 58 views
0
public void printTree(node root) 
    { 
     if(root != null) 
     { 
      printTree(root.left); 
      System.out.print(root.word + " " + root.line+" "); 
      String tempStr=root.word; int tempLn=root.line; //don't know how to use it 
      printTree(root.right); 
     } 
    } 

假定樹已經按字典順序排序。如何從二叉樹打印元素忽略所有重複的元素?

例如,該文件是這樣的:

AAA

ZZZ

所述的所述的

和輸出應該是這樣的:

aaa行:1

行:3 3 3 3

ZZZ行:2

我的代碼現在顯示爲許多times..I同樣的話不知道如何組織這個塊的代碼..

+0

更新相應的列表,你會介意發佈您的整個樹源代碼? – Leo

+0

@Leo:我編輯了我的帖子.. –

+0

我們可以修改你的樹的方法嗎?你必須在樹中行走時呈現這個結果,或者你可以在其他結構中累積數據?您只能使用您引用的臨時數據,或者我們可以使用節點臨時數據? – Leo

回答

0

問題是,你會立即輸出信息,因爲你發現它。相反,您需要以連續的方式存儲您遇到的數據。

您可能希望使用HashMap<String, List<Integer>>數據結構來保存此信息。

+0

您允許使用哪些數據結構? – gravityplanx

0

可以使用HashMap存儲對<String, List>,其中String將成爲你的關鍵和List將是位置,在這樣的關鍵發現的列表。如果您需要檢查,如果一個鍵已經在地圖上,你做

map.contains(key); 

,如果有一個,你可以通過做

map.get(key).add(page); 
+0

除了HashMap外,還有其他什麼可以使用嗎?我很抱歉地說,我不允許在這項任務中使用它... –

+0

你可以讓自己的班級存儲密鑰和職位列表,然後把它們放到一個簡單的列表中 – Warlord