思路:
題目描述從左到右一層一層的進行遍歷,就遍歷二叉樹的這種題我更喜歡用遞歸來做,
我使用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);}
}
?