Leetcode Binary Tree Level Order Traversal II 二叉树分层遍历

来源:互联网 发布:网络三国官网 编辑:程序博客网 时间:2024/05/16 19:04


题目:


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

For example:
Given binary tree {3,9,20,#,#,15,7},

    3   / \  9  20    /  \   15   7

return its bottom-up level order traversal as:

[  [15,7],  [9,20],  [3]]

分析:


和第一题目一样,只是需要在加入每层节点的时候都加在ArrayList的第一个。用下面这个函数:

public void add(int index, E element)

Inserts the specified element at the specified position in this list. Shifts the element currently at that position (if any) and any subsequent elements to the right (adds one to their indices).


Java代码实现:


/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public List<List<Integer>> levelOrderBottom(TreeNode root) {        List<List<Integer>> result = new ArrayList<List<Integer>>();        if(root==null)            return result;                    Queue<TreeNode> q = new LinkedList<TreeNode>();        q.offer(root);                while(!q.isEmpty())        {            int size = q.size();            ArrayList<Integer> temp = new ArrayList<Integer>();            for(int i=0;i<size;i++)            {                TreeNode node = q.poll();                temp.add(node.val);                if(node.left!=null)                    q.offer(node.left);                if(node.right!=null)                    q.offer(node.right);            }            result.add(0, temp);        }        return result;    }}


0 0