一. 问题描述
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。
例如:
给定二叉树: [3,9,20,null,null,15,7],
3
/
9 20
/
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
二. 解题思路
本题思路:采用递归+广度优先遍历的方法进行求解(创建递归函数(全局变量list存储结果值,临时变量data存储某一层节点))。
步骤一:将根节点加入到data表格中。
步骤二:遍历data节点将其子节点重新填入到新的data中,并将值添加到temp表格中。
步骤三:将temp表添加到list中,并返回步骤二,直到新的data表为空。
步骤四:返回list表。
三. 执行结果
执行用时 :2 ms, 在所有 java 提交中击败了65.23%的用户
内存消耗 :36.2 MB, 在所有 java 提交中击败了52.67%的用户
四. Java代码
class Solution { public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> list=new ArrayList<List<Integer>>(); if(root==null) { return list; } List<TreeNode> data=new ArrayList<TreeNode>(); data.add(root); Tree(list,data); return list; } public void Tree(List<List<Integer>> list,List<TreeNode> data) { if(data.size()==0) { return; } List<TreeNode> temp=new ArrayList<TreeNode>(); List<Integer> result=new ArrayList<Integer>(); for(int i=0;i<data.size();i++) { TreeNode m=data.get(i); result.add(m.val); if(m.left!=null) { temp.add(m.left); } if(m.right!=null) { temp.add(m.right); } } list.add(result); Tree(list,temp); } }