BST----Binary Tree Level Order Traversal

来源:互联网 发布:单片机属于嵌入式 编辑:程序博客网 时间:2024/05/02 19:58

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

Have you met this question in a real interview? Yes
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]
]
Challenge
Challenge 1: Using only 1 queue to implement it.

Challenge 2: Use DFS algorithm to do it.

递归算法

Java queue Api

/** * 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) {        // write your code here        ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();        if(root == null) return result ;        Queue<TreeNode> q = new LinkedList<TreeNode>();        q.offer(root);        while(!q.isEmpty()){            int qLen = q.size();            ArrayList<Integer> aList = new ArrayList <Integer>();            for(int i = 0; i<qLen; i++){                TreeNode node = q.poll();//出队                aList.add(node.val);                if(node.left!= null) q.offer(node.left);                if(node.right!=null) q.offer(node.right);//入队            }            result.add(aList);        }        return result ;    }}
0 0
原创粉丝点击