leetcode 102. Binary Tree Level Order Traversal

来源:互联网 发布:suse linux 配置ip 编辑:程序博客网 时间:2024/05/19 01:12

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,null,null,15,7],

    3   / \  9  20    /  \   15   7

return its level order traversal as:

[  [3],  [9,20],  [15,7]]
又是一道简单题。

使用BFS太无趣了,我这次来试试用DFS做。

public List<List<Integer>> levelOrder(TreeNode root) {List<List<Integer>> res=new ArrayList<List<Integer>>();helper(res, 0, root);return res;}public void helper(List<List<Integer>> res,int level,TreeNode node){if(node==null){return;}if(res.size()==level){res.add(new ArrayList<Integer>());}res.get(level).add(node.val);helper(res, level+1, node.left);helper(res, level+1, node.right);}
大神有的 跟我一样用了DFS,还有的 就用的无趣的BFS。
public class Solution {public List<List<Integer>> levelOrder(TreeNode root) {List<List<Integer>> res = new ArrayList<>();if (root == null)return res;Queue<TreeNode> queue = new LinkedList<>();queue.add(root);while (!queue.isEmpty()) {List<Integer> level = new ArrayList<>();int cnt = queue.size();for (int i = 0; i < cnt; i++) {TreeNode node = queue.poll();level.add(node.val);if (node.left != null) {queue.add(node.left);}if (node.right != null) {queue.add(node.right);}}res.add(level);}return res;}}


原创粉丝点击