給定一個二叉樹,返回該二叉樹層序遍歷的結(jié)果,(從左到右,一層一層地遍歷)
例如:
給定的二叉樹是{3,9,20,#,#,15,7},
該二叉樹層序遍歷的結(jié)果是
[
[3],
[9,20],
[15,7]
]
思路:
1.? 從左到右,可以使用二叉樹的前序遍歷
2. 層序遍歷,則需要有層記錄,可以root為第0層,以此類推
3. 使用遞歸,
代碼實現(xiàn)
public class Solution {
? ? ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
//? ? ArrayList<Integer> item
? ? /**
? ? *
? ? * @param root TreeNode類
? ? * @return int整型ArrayList<ArrayList<>>
? ? */
? ? public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
? ? ? ? // write code here
? ? ? ? if(null == root){return result;}
? ? ? ? recur(root,0);
? ? ? ? return result;
? ? }
? ? public void recur(TreeNode root, int level){
? ? ? ? if(result.size() == level ){//利用數(shù)組的下標 和層級關(guān)聯(lián)
? ? ? ? ? ? result.add(new ArrayList<Integer>());
? ? ? ? }
? ? ? ? ArrayList<Integer>? levelA = result.get(level);
? ? ? ? levelA.add(root.val);
? ? ? ? if(null != root.left){
? ? ? ? ? ? recur(root.left, level+1);
? ? ? ? }
? ? ? ? if(null != root.right){
? ? ? ? ? ? recur(root.right, level+1);
? ? ? ? }
? ? }
}