Leetcode之六Binary Tree Level Order Traversal

来源:互联网 发布:linux单用户修改密码 编辑:程序博客网 时间:2024/05/04 16:40

copyright:leetcode

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]]

confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.


OJ's Binary Tree Serialization:

The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.

Here's an example:

   1  / \ 2   3    /   4    \     5
The above binary tree is serialized as "{1,2,3,#,#,4,#,#,5}".

/** * Definition for binary tree * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public List<List<Integer>> levelOrder(TreeNode root) {ArrayList<List<Integer>> AList = new ArrayList<List<Integer>>();recur(root, 0, AList);return AList;    }private void recur(TreeNode tNode, int depth, ArrayList<List<Integer>> AList){ArrayList<Integer> list = null;if(tNode != null){if(AList.size() > depth){//means list depth has exlist = (ArrayList<Integer>)(AList.get(depth));}else{list = new ArrayList<Integer>();AList.add(list);}//System.out.println(tNode.val);//list.add(tNode.val);recur(tNode.left, depth + 1, AList);recur(tNode.right, depth + 1, AList);}} }

原理:二叉树中序遍历


程序提交成功,只是下面这个问题不是很清楚:

Question:List<List<Integer>> 与 ArrayList<ArrayList<Integer>> 无法进行类型转换

ArrayList<E> 实现了List<E>接口
















0 0
原创粉丝点击