leetCode 102.Binary Tree Level Order Traversal (二叉树水准遍历) 解题思路和方法
leetCode 102.Binary Tree Level Order Traversal (二叉树水平遍历) 解题思路和方法
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree {3,9,20,#,#,15,7}
,
3 / \ 9 20 / \ 15 7
return its level order traversal as:
[ [3], [9,20], [15,7] ]思路:水平遍历,可用dfs和bfs两种方法,楼主没有掌握bfs的方法,故本文用DFS实现。
具体代码如下:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { List<List<Integer>> list = new ArrayList<List<Integer>>(); public List<List<Integer>> levelOrder(TreeNode root) { dfs(0,root); return list; } /** * 中序遍历,根据深度添加list * @param dep 树的深度 * @param root 根节点 */ private void dfs(int dep,TreeNode root){ if(root == null){ return; } List<Integer> al;//根据情况得到al值 if(list.size() > dep){ al = list.get(dep); }else{ al = new ArrayList<Integer>(); list.add(al); } dfs(dep+1,root.left); al.add(root.val); dfs(dep+1,root.right); } }
版权声明:本文为博主原创文章,未经博主允许不得转载。