标签:eve bin return style 一个 元素 利用 img nbsp
一、题目
1、审题
2、分析
给出一个二叉树,将每一层节点值放在一个集合中,最终返回每一层节点值的所有集合。
二、解答
1、思路:
方法一、
①、首先,二叉树父即节点入队列。
②、队列头结点依次出队列,直到队列为空,并将每次出队列的队头节点放在一个 List 中
③、若队列为空时,说明这一层所有节点都放入了 List 中,此时,将 List 中节点的非空子节点依次入队列,即为下一层的所有节点;
同时将此时 List 中的所有节点值放在一个集合中记录,并清空 List, 开始下一层节点的遍历。
④、若 队列与 List 均为空,说明查找结束。
public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> resultList = new ArrayList<List<Integer>>(); if(root == null) return resultList; Queue<TreeNode> queue = new LinkedList<TreeNode>(); queue.add(root); List<TreeNode> list = new LinkedList<TreeNode>(); while(!queue.isEmpty()) { list.add(queue.poll()); // 队列头结点入 List if(queue.isEmpty() && list.size() > 0) { List<Integer> targetList = new LinkedList<Integer>(); for(TreeNode tmpNode: list) { targetList.add(tmpNode.val); if(tmpNode.left != null) queue.add(tmpNode.left); if(tmpNode.right != null) queue.add(tmpNode.right); } list.clear(); resultList.add(targetList); } } return resultList; }
方法二、
直接利用 queue.size() 属性,获取队列中这一层元素的个数。
public List<List<Integer>> levelOrder2(TreeNode root) { List<List<Integer>> resultList = new ArrayList<List<Integer>>(); if(root == null) return resultList; Queue<TreeNode> queue = new LinkedList<TreeNode>(); queue.add(root); while (!queue.isEmpty()) { int levelNum = queue.size(); List<Integer> subList = new LinkedList<>(); for(int i = 0; i < levelNum; i++) { TreeNode node = queue.poll(); if(node.left != null) queue.add(node.left); if(node.right != null) queue.add(node.right); subList.add(node.val); } resultList.add(subList); } return resultList; }
方法三、
采用递归将每一层的节点放入一个 List 中。
public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> resultList = new ArrayList<List<Integer>>(); levelHelper(resultList, root, 0); return resultList; } private void levelHelper(List<List<Integer>> resultList, TreeNode root, int height) { if(root == null) return; if(height >= resultList.size()) resultList.add(new LinkedList<Integer>()); resultList.get(height).add(root.val); levelHelper(resultList, root.left, height+1); levelHelper(resultList, root.right, height+1); }
102. Binary Tree Level Order Traversal
标签:eve bin return style 一个 元素 利用 img nbsp
原文地址:https://www.cnblogs.com/skillking/p/9721361.html