1. 程式人生 > >LeetCode 107. 二叉樹的層次遍歷 II(C++)

LeetCode 107. 二叉樹的層次遍歷 II(C++)

題目

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

給定二叉樹 [3,9,20,null,null,15,7],
    3
   / \
  9  20
    /  \
   15   7
返回其自底向上的層次遍歷為:
[
  [15,7],
  [9,20],
  [3]
]
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution { public: vector<vector<int>> levelOrderBottom(TreeNode* root) { vector< vector<int> > res; if(root == NULL) return res; queue < pair<TreeNode*, int> > q; //儲存節點和節點所在的層 q.push(make_pair(root, 0)); while
(!q.empty()){ TreeNode* node = q.front().first; int level = q.front().second; q.pop(); if(level == res.size()) res.push_back(vector<int>() ); res[level].push_back(node->val); if(node->left != NULL) q.push(make_pair(node->left, level + 1
)); if(node->right != NULL) q.push(make_pair(node->right, level + 1)); } vector<vector<int>> resBottom; for(int i = res.size() -1;i >= 0; i--){ vector<int> tmp = res[i]; resBottom.push_back(tmp); } return resBottom; } };

相關推薦

LeetCode筆記——107層次

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

LeetCode層次逆序輸出(簡單

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

層次C語言實現)

經過兩天長時間的學習, 通過研究佇列以及二叉樹的相關性質,終於寫出了二叉樹的層次遍歷。 該實現的核心就是使用佇列,每次把訪問到的節點的左右子樹放到佇列裡面去,出隊的時候同樣操作! 感謝@原來如此 , @AlexMok ,兩位同學,在小組相互學習的過程中收穫良

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 <

python實現層次(寬度優先或叫廣度優先

1、何為層次遍歷       說白了,就是一層一層、由上至下、由左至右的搜尋遍歷二叉樹中的元素。                上面這個二叉樹,那麼層次遍歷的輸出應該是:1、2、

層次_判斷結點所屬層次

#include<stdlib.h> #include<stdio.h> #include<stack> #define N 50 using namespace std; typedef struct tree{ char ch; stru

層次列印

二叉樹層次遍歷列印,並且每層對應輸出換行(遍歷一層輸出後,下一層遍歷換行輸出)。 final static int MAX_NUM = 500 class TreeNode { //二叉樹結構 int val = 0; TreeNode left = null;

層次(Java版)

/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * T

leetcode

題目要求 二叉樹的遍歷。 核心思想 利用佇列的特性來實現二叉樹的遍歷。 完整程式碼如下 import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.

層次並列印行號——java

主要程式碼 public void levelOrderNew(TreeNode root) { TreeNode last=root; //當前行最右結點 TreeNode nlast = null; //下一行最右結點 TreeN

建立:層次--的寬度高度,後序--祖先節點

建立二叉樹,遍歷二叉樹.詳細介紹了層次遍歷和後序遍歷的應用. 層次遍歷:樹的高度,樹的寬度,每一層節點個數等 後序遍歷:根節點到某節點的路徑,兩個節點的最近公共祖先等 package tree; import java.util.LinkedList

層次--C語言

  之前寫了二叉樹的先序、中序、後序遍歷,這些遍歷都用到了棧結構。今天寫一下二叉樹的層次遍歷,層次遍歷用到的資料結構是佇列。   層次遍歷演算法中增加了三個int型資料,其中levelcount用於記錄現在處理的是樹的第幾層;curlevel用於記錄當前層還有幾個節點沒有被訪問過;nextl

百度面試題之層次(從上到下,從下到上)

1.二叉樹的層次遍歷 遞迴解法 class Node(object): def __init__(self, v, left=None, right=None): self.value = v self.left = l

---層次

就是按層次來 首先是根節點A入佇列 然後是根節點的左B右C子樹 根節點A出佇列 左子B的左D右子樹入佇列然後B出佇列 C的左右子樹入對列C出佇列 然後是D以此迴圈知道佇列的頭部和尾部重合佇列空 輸出完畢 思路並不難,但是在網上看的寫的有點麻煩 照著一個ppt寫了個簡單一點的

層次原始碼

    vector<vector<int>> levelOrder(TreeNode* root) {             vector<vector<int>>res;             vector<