日期:2014-05-20  浏览次数:20669 次

求非二叉树的深度优先遍历算法(急需)
我已经在内存中构建了一个数,

其数据结构

Object[]
      |
      |-   Object[0]=Name
      |-   Object[1]=new   ArrayList();
                    |  
            Object[1].getElement(i)=new   Object[2];
         
          i=0..n


求其遍历算法!!(急需)



------解决方案--------------------
你的数据结构好让人费解,我按自己理解的,遍历只是打印叶子节点,根节点没有存储值,只是存储子节点的引用
简单起见,以下是伪代码,这种遍历我感觉还是用第归容易实现,参考一下:
// 遍历树“姑且叫做树吧“的主程序void searchTree(Object note) {
if note is Object[] // 如果节点是数组,调用数组遍历子程序

searchArray((Object[]) note);
else if note is ArrayList

searchArrayList((ArrayList) note); // 如果节点是连表,调用连表遍历子程序
else // 否则定是叶子节点,打印输出。

println(note);
}
// 数组遍历子程序
void searchArray(Object[] array) {
for i = 0 to array.length
searchTree(Object[i]); // 以数组中每个子节点为根节点调用遍历主程序}
// 连表遍历子程序

void searchArrayList(ArrayList list) {
for i = 0 to list.size
searchTree(list.get(i)); // 以连表中每个子节点为根节点调用遍历主程序
}


至于判断对象类型,也许可以用Class.isInstance(Object obj)