求非二叉树的深度优先遍历算法(急需)
我已经在内存中构建了一个数,
其数据结构
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)