leetcode:Binary Tree Level Order Traversal 【Java】
2016-03-07 14:20
525 查看
一、问题描述
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree
return its level order traversal as:
二、问题分析
使用两个链表分别保存树中前一层结点和当前层结点。
三、算法代码
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree
{3,9,20,#,#,15,7},
3 / \ 9 20 / \ 15 7
return its level order traversal as:
[ [3], [9,20], [15,7] ]
二、问题分析
使用两个链表分别保存树中前一层结点和当前层结点。
三、算法代码
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> result = new ArrayList<List<Integer>>(); if(root == null){ return result; } List<TreeNode> pre = new ArrayList<TreeNode>();//保存树中pre层树结点 pre.add(root); int preLength = 0; List<TreeNode> cur = null;//保存树中当前层树结点 List<Integer> curValue = null;//保存树的当前层树节点中数值 TreeNode curNode = null; while(pre.size() != 0){ preLength = pre.size(); cur = new ArrayList<TreeNode>(); curValue = new ArrayList<Integer>(); for(int i = 0; i <= preLength - 1; i++){ curNode = pre.get(i); curValue.add(curNode.val);//保存树的当前层树节点中数值 if(curNode.left != null){ cur.add(curNode.left); } if(curNode.right != null){ cur.add(curNode.right); } } result.add(curValue); pre = cur; } return result; } }
相关文章推荐
- Spring <context:annotation-config/> 解说
- 老鸟是怎样炼成的!(摘抄自一位JAVA前辈,写的很好。)
- JAVA的Date类与Calendar类【转】
- install opencv 3.1 on ubuntu 14.04+Eclipse
- 一个简单的Struts登录框架搭建教程
- Spring MVC 教程,快速入门,深入分析
- Java分布式优化
- java集合框架
- IT十八掌作业_java基础第三天_数组
- SpringMVC4+Hibernate4 问题汇总
- Eclipse 将projectBuild Path中引用的jar包自己主动复制到WEB-INF下的lib目录下
- java的锁机制
- 笔记--Spring Boot中解析yml配置 注入到对象
- eclipse maven 导出可执行jar
- 注解二之Java自定义注解
- java两个类相互持有引用的小问题
- 使用MyEclipse 2014创建项目
- JavaWeb项目中引入spring框架
- Ubuntu下的JDK,Maven环境安装
- Java核心技术学习笔记之四——泛型程序设计