arraylist inorder遍历java

时间:2014-10-17 20:35:41

标签: java arraylist traversal inorder

某个类的arraylist的值为

Node,Depth,Value
root,0,-2147483647
d3,1,4
e3,2,0
c5,2,0
c3,2,-3
c4,1,4
e3,2,0
c5,2,0
c3,2,-3
e6,1,4
d6,2,0
f4,2,0
f6,2,-3
f5,1,4
d6,2,0
f4,2,0
f6,2,-3

对象是这样的,它存储了父节点(即节点d3,父节点(d3)-root。关系是指给定节点X下面depth=X.depth+1 d3,c4,f5,e6以下的所有节点是它的孩子。 所以,Root的孩子是:c3  d3儿童为:e3c5root,0,-2147483647 d3,1,4 e3,2,0 d3,1,4 c5,2,0 d3,1,4 c3,2,-3 d3,1,4 root,0,-2147483647 c4,1,4 e3,2,0 c4,1,4 c5,2,0 c4,1,4 c3,2,-3 c4,1,4 root,0,-2147483647 e6,1,4 d6,2,0 e6,1,4 f4,2,0 e6,1,4 f6,2,-3 e6,1,4 root,0,-2147483647 f5,1,4 d6,2,0 f5,1,4 f4,2,0 f5,1,4 f6,2,-3 f5,1,4 root,0,-2147483647

现在,我必须编写一些代码来为它生成inorder遍历。 类似的东西:

private static void inordertraversal() {

ListIterator <nextmove> iter = nmstack.listIterator();
while(iter.hasNext())
{
    nextmove node=iter.next();
    if(node.depth==CutoffDepth)
    {
        maxdepth=true;
    }

    if (!maxdepth)
    {
        System.out.println(node.To.Name+","+node.depth+","+node.weight);

    }
    else
    {
        nextmove parent=findparent(node.parent);
        if (node.parent!=0)
        {   
        System.out.println(node.To.Name+","+node.depth+","+node.weight);
        System.out.println(parent.To.Name+","+parent.depth+","+parent.weight);

        }
        else
        {
            System.out.println(parent.To.Name+","+parent.depth+","+parent.weight);
            System.out.println(node.To.Name+","+node.depth+","+node.weight);

        }
    }

}
}

我写过像这样的java方法

{{1}}

但这不是GENERIC(如果深度增加/改变它将不起作用)也不完整。怎么做这个顺序遍历我的arraylist。假设Arraylist具有节点名称,深度及其父级序列号。有人可以给我指针吗? 这不是二叉树。

1 个答案:

答案 0 :(得分:0)

首先,你绝对想要取ArrayList并首先构建一棵树。你真的不想尝试对数据结构进行顺序遍历,而它仍然表示为ArrayList。那是你的第一个任务。

一旦你完成了这个,顺序遍历就很容易了。它有这个计划:

  1. 以递归方式探索左边的孩子;
  2. 处理此节点;
  3. 递归探索合适的孩子。
  4. 但是,您有一个主要问题,就是说这不是二叉树。 Inorder遍历仅为二叉树定义,因为您必须先执行左手操作,然后是当前节点,然后是右侧路径。对于任何其他类型的树,这都没有明确定义。