LeetCode[102]二叉树的层序遍历
思路:
题目描述从左到右一层一层的进行遍历,就遍历二叉树的这种题我更喜欢用递归来做,
我使用java来做的,结果集是两个List集合,那么我们是不是应该每到新的一层就给这个结果集添加一个内部的List,那么怎么判断左右节点在同一层级呢?我想的就是模拟一个层级的参数为k,root的左右节点都属于一个层级,那么递归的时候对应的就是k+1;以此类推,拿到结果。
代码:
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
class Solution {List<List<Integer>> res = new ArrayList<>();public List<List<Integer>> levelOrder(TreeNode root) {level(root, 0);return res;}public void level(TreeNode root, int k) {if (root == null)return;if (k == res.size())res.add(new ArrayList<>());res.get(k).add(root.val);level(root.left, k + 1);level(root.right, k + 1);}
}