1. 程式人生 > >【LeetCode-面試算法經典-Java實現】【107-Binary Tree Level Order Traversal II(二叉樹層序遍歷II)】

【LeetCode-面試算法經典-Java實現】【107-Binary Tree Level Order Traversal II(二叉樹層序遍歷II)】

lin -m length ret itl pub util 實現類 markdown

【107-Binary Tree Level Order Traversal II(二叉樹層序遍歷II)】


【LeetCode-面試算法經典-Java實現】【全部題目文件夾索引】

原題

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

題目大意

  給定一棵二叉樹自底向下進行層序遍歷。

解題思路

  對樹進行層序遍歷,每層的結果放在結果鏈表的頭部。


代碼實現

public class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
    TreeNode(int x) { val = x; }
}

算法實現類

import java.util.*;

public class Solution {
    public List<List<Integer>> levelOrderBottom(TreeNode root) {

        List<List<Integer>> list = new LinkedList<>();
        if (root == null) {
            return list;
        }

        Deque<TreeNode>
cur = new LinkedList<>(); Deque<TreeNode> nxt = new LinkedList<>(); Deque<TreeNode> exc = new LinkedList<>(); TreeNode tmp; cur.add(root); while (!cur.isEmpty()) { List<Integer> layout = new ArrayList<>(); while (!cur.isEmpty()) { tmp = cur.remove(); if (tmp.left != null) { nxt.add(tmp.left); } if (tmp.right != null) { nxt.add(tmp.right); } layout.add(tmp.val); } exc = cur; cur = nxt; nxt = exc; list.add(0, layout); } return list; } }

評測結果

  點擊圖片,鼠標不釋放,拖動一段位置。釋放後在新的窗體中查看完整圖片。

技術分享

特別說明

歡迎轉載,轉載請註明出處【http://blog.csdn.net/derrantcm/article/details/47392965】

【LeetCode-面試算法經典-Java實現】【107-Binary Tree Level Order Traversal II(二叉樹層序遍歷II)】