问题:一个根目录下有多个子目录,每个子目录下又有多个子目录,要求按顺序深度遍历输出目录文件。
定义结点对象:
package test;
import java.util.List;
public class Node {
protected int value;
protected List<Node> sonList;
public Node(int value,List<Node> sonList){
this.value = value;
this.sonList = sonList;
}
}
深度遍历算法,其实和二叉树的前序遍历原理一样:
package test;
import java.util.ArrayList;
import java.util.List;
public class TestNode {
public static void main(String[] args) {
List<Node> sonList = new ArrayList<Node>();//根结点第一层结点list
List<Node> sonList11 = new ArrayList<Node>();//第一层第一个结点的子层节点list
List<Node> sonList31 = new ArrayList<Node>();//第一层第三个结点的子层节点list
Node node11 = new Node(11, null);
Node node12 = new Node(12, null);
Node node13 = new Node(13, null);
sonList11.add(node11);
sonList11.add(node12);
sonList11.add(node13);
Node node1 = new Node(1, sonList11);
Node node2 = new Node(2, null);
Node node3 = new Node(3, sonList31);
sonList.add(node1);
sonList.add(node2);
sonList.add(node3);
Node node31 = new Node(31, null);
Node node32 = new Node(32, null);
Node node33 = new Node(33, null);
sonList31.add(node31);
sonList31.add(node32);
sonList31.add(node33);
Node root = new Node(0, sonList);
preOrder(root);
}
/**
* @方法的功能 前序遍历
* @返回类型void
* @作者835890
* @日期2017年4月26日
*/
private static void preOrder(Node root) {
if(root != null){
System.out.print(root.value + " ");
if(root.sonList != null){
for (int i = 0; i < root.sonList.size(); i++) {
preOrder(root.sonList.get(i));
}
}
}
}
}
运行结果:
0 1 11 12 13 2 3 31 32 33