Binary Tree Level Order Traversal

来源:互联网 发布:软件卸载工具 编辑:程序博客网 时间:2024/06/06 13:23

Fair Binary Tree Level Order TraversalMy Submissions

30%
Accepted

Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).

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]]
1. Use two queues.

/** * Definition of TreeNode: * public class TreeNode { *     public int val; *     public TreeNode left, right; *     public TreeNode(int val) { *         this.val = val; *         this.left = this.right = null; *     } * } */  public class Solution {    /**     * @param root: The root of binary tree.     * @return: Level order a list of lists of integer     */    public ArrayList<ArrayList<Integer>> levelOrder(TreeNode root) {        ArrayList<ArrayList<Integer>> rst = new ArrayList<ArrayList<Integer>>();        if(root == null) {            return rst;        }        ArrayList<Integer> level = new ArrayList<Integer>();        Queue<TreeNode> cur = new LinkedList<TreeNode>();        Queue<TreeNode> next = new LinkedList<TreeNode>();        cur.add(root);        while (!cur.isEmpty()) {            TreeNode temp = cur.poll();            level.add(temp.val);            if (temp.left != null) {                next.add(temp.left);            }             if (temp.right != null) {                next.add(temp.right);            }            if(cur.isEmpty()) {                rst.add(new ArrayList(level));                level = new ArrayList<Integer>();                if (!next.isEmpty()) {                    cur = next;                    next = new LinkedList<TreeNode>();                }            }        }        return rst;    }}


2. Use one queue, use a counter to record the number of nodes in each level

/** * Definition of TreeNode: * public class TreeNode { *     public int val; *     public TreeNode left, right; *     public TreeNode(int val) { *         this.val = val; *         this.left = this.right = null; *     } * } */  public class Solution {    /**     * @param root: The root of binary tree.     * @return: Level order a list of lists of integer     */    public ArrayList<ArrayList<Integer>> levelOrder(TreeNode root) {        ArrayList<ArrayList<Integer>> rst = new ArrayList<ArrayList<Integer>>();        if(root == null) {            return rst;        }        ArrayList<Integer> level = new ArrayList<Integer>();        Queue<TreeNode> cur = new LinkedList<TreeNode>();        cur.add(root);        while (!cur.isEmpty()) {            int size = cur.size();            for(int i = 0; i < size; i++) {                TreeNode temp = cur.poll();                level.add(temp.val);                if (temp.left != null) {                    cur.add(temp.left);                }                 if (temp.right != null) {                    cur.add(temp.right);                }            }            rst.add(new ArrayList(level));            level = new ArrayList<Integer>();        }        return rst;    }}


0 0
原创粉丝点击