1. 程式人生 > >LeetCode題庫解答與分析——#107. 二叉樹的層次遍歷 IIBinaryTreeLevelOrderTraversal

LeetCode題庫解答與分析——#107. 二叉樹的層次遍歷 IIBinaryTreeLevelOrderTraversal

給定一個二叉樹,返回其節點值自底向上的層次遍歷。 (即按從葉節點所在層到根節點所在的層,逐層從左向右遍歷)

例如:
給定二叉樹 [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

返回其自自底向上的層次遍歷為:

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

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

個人思路:

參考二叉樹的層次遍歷的思路,但總的結果用棧儲存,最後再一次彈出,從而使各個分陣列逆序排列

程式碼(JavaScript):

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public List<List<Integer>> levelOrderBottom(TreeNode root) {
        Queue<TreeNode> queue=new LinkedList<TreeNode>();
        Stack<List<Integer>> visited=new Stack<List<Integer>>();
        List<List<Integer>> result=new LinkedList<List<Integer>>();
        int row=0,col=0;
        if(root!=null){queue.offer(root);}
        else{return visited;}
        while(!queue.isEmpty()){
            int level=queue.size();
            List<Integer> sub_visited=new LinkedList<Integer>();
            for(int i=0;i<level;i++){
                if(queue.peek().left!=null){queue.offer(queue.peek().left);}
                if(queue.peek().right!=null){queue.offer(queue.peek().right);}
                sub_visited.add(queue.poll().val);
            }
            visited.push(sub_visited);
        }
        while(!visited.isEmpty()){
            result.add(visited.pop());
        }
        return result;
    }
}

相關推薦

LeetCode解答分析——#107. 層次 IIBinaryTreeLevelOrderTraversal

給定一個二叉樹,返回其節點值自底向上的層次遍歷。 (即按從葉節點所在層到根節點所在的層,逐層從左向右遍歷)例如:給定二叉樹 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其自自底向上的層次遍

LeetCode解答分析——#103. 的鋸齒形層次BinaryTreeZigzagLevelOrderTraversal

給定一個二叉樹,返回其節點值的鋸齒形層次遍歷。(即先從左往右,再從右往左進行下一層遍歷,以此類推,層與層之間交替進行)。例如:給定二叉樹 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回鋸齒形

LeetCode筆記——107層次

題目: 給定一個二叉樹,返回其節點值自底向上的層次遍歷。 (即按從葉子節點所在層到根節點所在的層,逐層從左向右遍歷) 例如: 給定二叉樹 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7

LeetCode解答分析——#95. 不同的查詢 IIUniqueBinarySearchTreeII

Given an integer n, generate all structurally unique BST's (binary search trees) that store values 1...n.For example,Given n = 3, your program should retur

LeetCode解答分析——#108. 將有序陣列轉換為搜尋ConvertSortedArrayToSearchBinaryTree

將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。此題中,一個高度平衡二叉樹是指一個二叉樹每個節點的左右兩個子樹的高度差的絕對值不超過1。示例:給定有序陣列: [-10,-3,0,5,9], 一種可行答案是:[0,-3,9,-10,null,5],它可以表示成下面

LeetCode解答分析——#101. 對稱SymmetricTree

給定一個二叉樹,檢查它是否是它自己的映象(即,圍繞它的中心對稱)。例如,這個二叉樹 [1,2,2,3,4,4,3] 是對稱的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面這個 [1,2,2,null,3,null,3] 則不是:

LeetCode解答分析——#7.顛倒整數ReverseInteger

#7 顛倒整數 Reverse Integer給定一個範圍為 32 位 int 的整數,將其顛倒。Given a 32-bit signed integer, reverse digits of an integer.例 1:輸入: 123 輸出: 321 例 2:輸入:

LeetCode解答分析——#53.最大子序和MaximumSubarray

#53 最大子序和 Maximum Subarray給定一個序列(至少含有 1 個數),從該序列中尋找一個連續的子序列,使得子序列的和最大。例如,給定序列 [-2,1,-3,4,-1,2,1,-5,4],連續子序列 [4,-1,2,1] 的和最大,為 6。Find the c

LeetCode解答分析——#221. 最大正方形MaximumSquare

在一個由0和1組成的二維矩陣內,尋找只包含1的最大正方形,並返回其面積。例如,給出如下矩陣:1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 返回 4.Given a 2D binary matrix filled with 0's and 1'

LeetCode解答分析——#120. 三角形最小路徑和Triangle

給出一個三角形(資料陣列),找出從上往下的最小路徑和。每一步只能移動到下一行中的相鄰結點上。比如,給你如下三角形:[ [2], [3,4], [6,5,7], [4,1,8,3] ] 則從上至下最小路徑和為 11(即,2 + 3 + 5 + 1 

LeetCode解答分析——#70. 爬樓梯ClimbingStairs

#70. 爬樓梯 Climbing Stairs你正在爬樓梯。需要 n 步你才能到達頂部。每次你可以爬 1 或 2 個臺階。你有多少種不同的方式可以爬到樓頂呢?You are climbing a stair case. It takes n steps to reach t

LeetCode解答分析——#11.盛最多水的容器ContainerWithMostWater

#11 盛最多水的容器 Container With Most Water給定 n 個正整數 a1,a2,...,an,其中每個點的座標用(i, ai)表示。 畫 n 條直線,使得線 i 的兩個端點處於(i,ai)和(i,0)處。請找出其中的兩條直線,使得他們與 X 軸形成的

LeetCode層次逆序輸出(簡單

問題描述: 給定一個二叉樹,返回其節點值自底向上的層次遍歷。 (即按從葉子節點所在層到根節點所在的層,逐層從左向右遍歷) 例如: 給定二叉樹 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7

LeetCode 102. Binary Tree Level Order Traversalet ()

原題 Given a binary tree, return the level order traversal of its nodes’ values. (ie, from left to right, level by level). For example: Given bi

LeetCode:Binary Tree Level Order Traversal層次

=======題目描述======= 題目連結:https://leetcode.com/problems/binary-tree-level-order-traversal/ 題目內容: Binary Tree Level Order Traversal Given a binar

[leetcode-層次並統計每層節點數]--102. Binary Tree Level Order Traversal

Question 102. Binary Tree Level Order Traversal Given a binary tree, return the level order traversal of its nodes’ values. (ie

層次

!= problem splay color list gif 二叉樹層次遍歷 eno empty http://www.lintcode.com/zh-cn/problem/binary-tree-level-order-traversal/# 錯誤點:queue是抽象的

畢業了-java層次算法

== 需要 數據 nbsp 測試 class system col ava /*************************************** * 時間:2017年6月23日 * author:lcy * 內容:二叉樹的

畢業了C++層次

== 容器 null tdi 指針 creat tno bit stack //代碼經過測試,賦值粘貼即可用#include<iostream> #include<stdio.h> #include<stack> #include<

第六章例題層次

ear 指針 內存 寬度優先 def delete back blog value 1.指針實現 #include <iostream> #include <vector> #include <queue> #include <