题目:leetcode107. 二叉树的层序遍历 II
描述
给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
思路
这道题是二叉树的层次遍历,只不过是从底部向上进行层次遍历,我们可以先从上往下进行层次遍历,最后将得到的数组逆序输出,就可以得到从底部向上遍历的层次遍历了。
代码
import java.util.*;
public class Solution {
public List<List<Integer>> levelOrderBottom(TreeNode root)
{
if(root==null)
return new ArrayList<List<Integer>>();
List<List<Integer>> result=new ArrayList<List<Integer>>();
Deque<TreeNode> deque=new LinkedList<>();
deque.offer(root);
int length=0;
while(!deque.isEmpty())
{
length=deque.size();
List<Integer> tmp=new ArrayList<>();
while(length>0)
{
TreeNode node=deque.poll();
tmp.add(node.val);
if(node.left!=null)
deque.offer(node.left);
if(node.right!=null)
deque.offer(node.right);
length--;
}
result.add(tmp);
}
Collections.reverse(result);
return result;
}
}