leetcode解题之107 # Binary Tree Level Order Traversal II Java版

来源:互联网 发布:开淘宝店需要什么资料 编辑:程序博客网 时间:2024/06/01 09:52
 107. Binary Tree Level Order Traversal II

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

运用广度优先搜索方法,运用队列的方法,每次遍历一层的叶节点,并把下一层的叶节点加入到队列中。

每次遍历一层节点结束时候,将该层节点组成的list放到整体的list之前,实现由底到高的排列。

//树节点定义public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) {val = x;}}

public List<List<Integer>> levelOrderBottom(TreeNode root) {List<List<Integer>> list = new LinkedList<List<Integer>>();Queue<TreeNode> queue = new LinkedList<TreeNode>();if (root == null)return list;queue.offer(root);while (!queue.isEmpty()) {int num = queue.size();List<Integer> levelList = new LinkedList<Integer>();for (int i = 0; i < num; i++) {TreeNode node = queue.peek();if (node.left != null)queue.offer(node.left);if (node.right != null)queue.offer(node.right);levelList.add(queue.poll().val);}// 在链表开始处插入list.add(0, levelList);}return list;}

补充:

/*  queue方法补充:  add 增加一个元索。 如果队列已满,则抛出一个IIIegaISlabEepeplian异常          remove 移除并返回队列头部的元素。如果队列为空,则抛出一个NoSuchElementException异常           element 返回队列头部的元素。 如果队列为空,则抛出一个NoSuchElementException异常            offer 添加一个元素并返回true。 如果队列已满,则返回false   poll 移除并返问队列头部的元素 。如果队列为空,则返回null   peek 返回队列头部的元素。 如果队列为空,则返回null    put 添加一个元素。 如果队列满,则阻塞   take 移除并返回队列头部的元素。 如果队列为空,则阻塞  remove、element、offer 、poll、peek 其实是属于Queue接口*/




0 0
原创粉丝点击