2014-02-17 56 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