多叉树的深度遍历

本文介绍了一种基于Java实现的深度遍历算法,通过构建树形结构的数据模型,实现了对多级目录结构的深度优先遍历。具体展示了如何创建结点对象、构建目录树以及递归遍历的方法。

问题:一个根目录下有多个子目录,每个子目录下又有多个子目录,要求按顺序深度遍历输出目录文件。

定义结点对象:

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 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值