每一层一个列表广度遍历二叉树
2015-09-28 19:51
260 查看
之前有个广度遍历二叉树类似的思想,将每一层放到一个集合去遍历。
private ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) { // pRoot为空,返回为空的集合 if (pRoot == null) return new ArrayList<ArrayList<Integer>>(); else { //所有层的集合 ArrayList<ArrayList<TreeNode>> list = new ArrayList<ArrayList<TreeNode>>();//总节点列表 //添加根节点 ArrayList<TreeNode> listRoot = new ArrayList<TreeNode>(); listRoot.add(pRoot); list.add(listRoot); //如果存在左子树或右子树 if(pRoot.left != null ||pRoot.right != null) { //list2用于存下一层的节点 ArrayList<TreeNode> list2 = null; list2 = new ArrayList<TreeNode>(); if(pRoot.left != null) list2.add(pRoot.left); if(pRoot.right != null) list2.add(pRoot.right); do { ArrayList<TreeNode> list3 = new ArrayList<TreeNode>(); for(TreeNode treeNode : list2) { if(treeNode.left != null) list3.add(treeNode.left); if(treeNode.right != null) list3.add(treeNode.right); } list.add(list2); //list2指向下一层 list2 = list3; }while(list2.size() != 0); } /* * 将节点值分别取出来 */ ArrayList<ArrayList<Integer>> integerList = new ArrayList<ArrayList<Integer>>(); for(ArrayList<TreeNode> list4 : list) { ArrayList<Integer> intlist = new ArrayList<Integer>(); for(TreeNode t : list4) { intlist.add(t.val); } integerList.add(intlist); } return integerList; }
相关文章推荐
- Android ImageView 图片设置为透明
- [redis] redis 如何删除匹配模式的多个key值
- 【JSOI 2008】【BZOJ 1017】魔兽地图DotR
- 随机数生成
- java自带线程池和队列详细讲解
- UVA-1601 The Morning after Halloween(BFS或双向BFS)
- github错误 Agent admitted failure to sign using the key Permission denied (publickey)
- linux配置samba服务器和windows进行数据交互
- 内存泄露和内存管理
- mem的一些问题总结
- 继承机制的探讨
- 0-7 文本编辑器的使用
- 图结构 java实现
- tomcat 管理控制台配置
- PHP 操作MySQL:增删改查
- POJ 3237 Tree
- 图片封装下载----异步block传值
- C++书目
- C和C++头文件的不同
- Murano为镜像包添加Root用户密码