将二叉树转换为List <list <node>&gt; </list <node>

时间:2011-05-11 10:06:46

标签: java algorithm tree

我的算法是否正确?

List<List<Node> > ol = new ArrayList<List<Node>>();
build(root,0)

void build (Node node,int level)
{ 
 if(node==null)
    return;
  List<Node> il;
  if(ol.size() < level){
   il =  new ArrayList<Node>(); 
  }else{
  il= ol.get(level);
  }

il.add(node);
ol.put(level,il);
 build(node.left, level+1);
 build(node.right,level+1);
}

1 个答案:

答案 0 :(得分:1)

假设您需要每个级别的节点列表,这似乎是正确的,除了:

  1. ol.put(level,il);列表没有put方法(在这种情况下会set)。
  2. 在创建该级别的新数组列表后,我将删除上面的行并添加ol.add(il)
  3. 我还将外部列表作为方法参数传递,而不是使用成员变量(尽管这更像是设计问题)
  4. ;
  5. 后遗失了build(root, 0)

    编辑:澄清不。 2:

    if(ol.size() < level) {
      il = new ArrayList<Node>();
      ol.add(il); //add here only, assuming level = ol.size() + 1 always is true in this case
    }