java 遍历树节点 同时保留所有的从根到叶节点的路径
2015-07-22 11:54
253 查看
直接在代码。稍后细说
数据结构定义:
遍历并保存路径
数据结构定义:
/** * */ package Servlet; import java.util.ArrayList; import java.util.List; /** * @author lei * */ public class node { private String text; private List<node>childList; public String getText() { return text; } public void setText(String text) { this.text = text; } public List<node> getChildList() { return childList; } public void setChildList(List<node> childList) { this.childList = childList; } public static node getInitNode() { node nodeA=new node(); nodeA.setText("A"); node nodeB=new node(); nodeB.setText("B"); node nodeC=new node(); nodeC.setText("C"); node nodeD=new node(); nodeD.setText("D"); node nodeE=new node(); nodeE.setText("E"); List<node>lstB=new ArrayList(); lstB.add(nodeC); lstB.add(nodeD); nodeB.setChildList(lstB); List<node>lstA=new ArrayList(); lstA.add(nodeB); lstA.add(nodeE); nodeA.setChildList(lstA); return nodeA; } }
遍历并保存路径
/** * */ package Servlet; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Stack; /** * @author lei * */ public class IteratorNodeTool { Map<String,List> pathMap=new HashMap();//记录全部从根节点到叶子结点的路径 private void print(List lst)//打印出路径 { Iterator it=lst.iterator(); while(it.hasNext()) { node n=(node)it.next(); System.out.print(n.getText()+"-"); } System.out.println(); } public void iteratorNode(node n,Stack<node> pathstack) { pathstack.push(n);//入栈 List childlist=n.getChildList(); if(childlist==null)//没有孩子 说明是叶子结点 { List lst=new ArrayList(); Iterator stackIt=pathstack.iterator(); while(stackIt.hasNext()) { lst.add(stackIt.next()); } print(lst);//打印路径 pathMap.put(n.getText(), lst);//保存路径信息 return; }else { Iterator it=childlist.iterator(); while(it.hasNext()) { node child=(node)it.next(); iteratorNode(child,pathstack);//深度优先 进入递归 pathstack.pop();//回溯时候出栈 } } } public static void main(String[] args) { Stack <node>pathstack=new Stack(); node n=node.getInitNode(); IteratorNodeTool tool=new IteratorNodeTool(); tool.iteratorNode(n, pathstack); } }
相关文章推荐
- java 乐观锁与悲观锁
- Java继承学习小结
- Java读取UTF-8格式文件第一行出现乱码——问号“?”及解决 And Java读带有BOM的UTF-8文件乱码原因及解决方法
- 怎样将myeclipse里默认编码设置成utf-8
- Spring常用注解
- foreach~~~java中的冒号
- java中yyyy-MM-dd HH:mm:ss类型转换成long类型
- JAVA RMI远程方法调用简单实例
- Spring注解讲解
- Java中从控制台读取输入的方法的总结
- Java连接JDBC数据库
- java二维不定长数组测试
- eclipse 新建SDK项目
- java_acm快速输入和输出
- Java NIO 特性学习
- Java学习--多线程中synchronized的使用心得
- JAVA 实现银行卡归属地查询
- javaScirpt学习之事件
- Windows+eclipse+Android+java+api+opencv使用需要注意的几点
- java SSH整合配置