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<