算法系列——Binary Tree Level Order Traversal II

来源:互联网 发布:程序员的自我修养 ppt 编辑:程序博客网 时间:2024/06/04 19:33

题目描述

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,null,null,15,7],
3
/ \
9 20
/ \
15 7
return its bottom-up level order traversal as:
[
[15,7],
[9,20],
[3]
]

解题思路

还是二叉树的层次遍历,和Binary Tree Level Order Traversal II,一致,不过需要在对结果列表进行翻转。

程序实现

public class Solution {    public List<List<Integer>> levelOrderBottom(TreeNode root) {          Queue<TreeNode> queue = new LinkedList<TreeNode>();        List<List<Integer>> result = new LinkedList<List<Integer>>();         List<List<Integer>> temp = new LinkedList<List<Integer>>();        if(root == null) return result;        queue.offer(root);        while(!queue.isEmpty()){            int levelNum = queue.size();            List<Integer> subList = new LinkedList<Integer>();            for(int i=0; i<levelNum; i++) {                if(queue.peek().left != null) queue.offer(queue.peek().left);                if(queue.peek().right != null) queue.offer(queue.peek().right);                subList.add(queue.poll().val);            }            temp.add(subList);        }        for(int i=temp.size()-1;i>=0;i--)            result.add(temp.get(i));        return result;    }}
原创粉丝点击