Binary Tree Level Order Traversal 解题报告

版权声明:转载请注明本文源地址 https://blog.csdn.net/qwe6112071/article/details/71599361

Binary Tree Level Order Traversal

Description

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

实现思路

通过一个队列维护每一层的节点,在某一层中,一次从队列中取出节点,再将其叶子节点放进下一层队列中,遍历完当前层,再遍历下一层,直到下一层的队列全为空,则结束层次遍历

/**
 * 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>> ret = new ArrayList<>();
        if(root == null){
            return ret;
        }
        LinkedList<TreeNode> list = new LinkedList<>();
        list.add(root);
        while(!list.isEmpty()){
            ArrayList<Integer> oneRet = new ArrayList<>();
            List<TreeNode> tempNodes = new ArrayList(list.subList(0, list.size()));
            list.clear();
            for(TreeNode node : tempNodes){
                oneRet.add(node.val);
                if(node.left != null){
                    list.add(node.left);
                }
                if(node.right != null){
                    list.add(node.right);
                }
            }
            ret.add(oneRet);
        }
        return ret;
    }
}

猜你喜欢

转载自blog.csdn.net/qwe6112071/article/details/71599361
今日推荐