ligen-Blogs

今天学习了下递归遍历,好久没怎么用了,都有些忘记了。废话不多说,直接上例子。

下面是遍历简单的树形结构:

node1
-----node11
--------node111
-----node12
node2
-----node21
node3

 

public class Test {

	public static void main(String[] args) {
		 	List<Node> nodes = new ArrayList<Node>();  
         
	        Node node1 = new Node();  
	        node1.setId(1);  
	        node1.setName("node1");  
	        node1.setParentId(0);  
	        node1.setLink(null);  
	        nodes.add(node1);  
	          
	        Node node11 = new Node();  
	        node11.setId(11);  
	        node11.setName("node11");  
	        node11.setParentId(1);  
	        node11.setLink(null);  
	        nodes.add(node11);  
	          
	        Node node111 = new Node();  
	        node111.setId(111);  
	        node111.setName("node111");  
	        node111.setParentId(11);  
	        node111.setLink(null);  
	        nodes.add(node111);  
	          
	        Node node12 = new Node();  
	        node12.setId(12);  
	        node12.setName("node12");  
	        node12.setParentId(1);  
	        node12.setLink(null);  
	        nodes.add(node12);  
	          
	        Node node2 = new Node();  
	        node2.setId(2);  
	        node2.setName("node2");  
	        node2.setParentId(0);  
	        node2.setLink(null);  
	        nodes.add(node2);  
	          
	        Node node21 = new Node();  
	        node21.setId(21);  
	        node21.setName("node21");  
	        node21.setParentId(2);  
	        node21.setLink(null);  
	        nodes.add(node21);  
	          
	        Node node3 = new Node();  
	        node3.setId(3);  
	        node3.setName("node3");  
	        node3.setParentId(0);  
	        node3.setLink(null);  
	        nodes.add(node3);  
	        List<Node> nodeList = new ArrayList<Node>();
	        for (Node node : nodes) {  
	            Integer id = node.getId();  
	            if (node.getParentId() == 0) {  
	                 node = buildTree(nodes,node);
	                 nodeList.add(node);
	            }  
	        } 
	        int i=0;
	        for(Node item:nodeList){
	        	System.out.println(item.toString());
	        	show(item,i);
	        	
	        }
	        System.out.println(i);
	}
	
	public static void show(Node node,int num){
		if(node.getChildrens().size()>0){
			for(int m=0;m<num;m++){
				System.out.print("---");
			}
			num++;
    		for(Node item:node.getChildrens()){
    			System.out.println("-----"+item.toString());
    			show(item,num);
    		}
    	}
	}
	
	public static Node buildTree(List<Node> list,Node node){
		List<Node> children = new ArrayList<Node>();
		for(Node item:list){
			if(item.getParentId()==node.getId()){
				children.add(buildTree(list,item)); 
			}
		}
		node.setChildrens(children);
		return node;
		
	}

}

 

分类:

技术点:

相关文章: