您的位置:首页 > 其它

LeetCode 102. Binary Tree Level Order Traversal

2016-04-20 15:35 211 查看
思路:这道题目感觉有点难度。题目的意思是将每一层的节点都放到一个list中,最后返回一个list

public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> answerList = new LinkedList<List<Integer>>();
// nodeList用来记录每一层的节点
List<Integer> nodeList = new ArrayList<Integer>();
//current用来记录遍历每一层节点时,用来表示当前的节点
LinkedList<TreeNode> current = new LinkedList<TreeNode>();
// next用来记录下一层的节点。
LinkedList<TreeNode> next = new LinkedList<TreeNode>();
if(root == null){
return answerList;
}
current.add(root);
while(!current.isEmpty()){
// remove()是把top节点拿出来并在队列中删除,并将下层节点放到next中
TreeNode tr = current.remove();
if(tr.left != null){
next.add(tr.left);
}
if(tr.right != null){
next.add(tr.right);
}
nodeList.add(tr.val);
// 当队列为空时,就把这一层的nodeList放到answerList中。
if(current.isEmpty()){
current = next;
next = new LinkedList<TreeNode>();
answerList.add(nodeList);
nodeList = new ArrayList<Integer>();
}

}
return answerList;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: