不用递归也来构造树型结构

某日有人问我怎样把类别表的数据在JAVA程序中构造。
第一答案就是递归咯~~~~
不过我一向不大记住以前的东西,所以另外想了个方法,就是借助Map把类别表的数据变成一棵树。

/**
 * 我是节点类~~ 嘻嘻嘻~~~~
 */
public class Node {
	//节点ID
	private Integer nId;
	//节点名称
	private String nName;
	//父节点ID
	private Integer pId;
	//子节点集合
	private List<Node> cNodes;
	
	public void addChild(Node node) {
		if (cNodes == null) {
			cNodes = new ArrayList<Node>();
		}
		cNodes.add(node);
	}
	
	// 下面的get set 方法就省略了。
}


public class Builder {

	public void build() {
		// 首先把需要记录取出来放到一个Map集合里。
		// 比如在数据可以中取出
		Map map = new xxxxMap();
		Node node;
		// 如何查询数据库中的数据就不写了。。
		........
		while (rs.next()) {
			//创建节点对象
			node = new Node();
			node.nId = rs.getInt(1);
			.......
			// 创建好就添加到集合里
			map.put(node.nId, node);
		}
		
		// 获取到所有数据后需要遍历一次map。
		for (Node n : map.values()) {
			// 用当前对象的父节点ID在map中找出父节点对象
			if (!(node = map.get(n.pId)) == null) {
				// 为父节点对象添加子节点
				node.addChild(n);
			}
		}//循环完毕树形结构也就出来啦~~~~~
	}
}



好吧我承认我是变相偷懒伪代码党

你可能感兴趣的:(数据结构)