某个类的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儿童为:e3
,c5
,root,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具有节点名称,深度及其父级序列号。有人可以给我指针吗? 这不是二叉树。
答案 0 :(得分:0)
首先,你绝对想要取ArrayList
并首先构建一棵树。你真的不想尝试对数据结构进行顺序遍历,而它仍然表示为ArrayList
。那是你的第一个任务。
一旦你完成了这个,顺序遍历就很容易了。它有这个计划:
但是,您有一个主要问题,就是说这不是二叉树。 Inorder遍历仅为二叉树定义,因为您必须先执行左手操作,然后是当前节点,然后是右侧路径。对于任何其他类型的树,这都没有明确定义。