二叉树的层次遍历 II

二叉树的层次遍历 II

给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历)

样例

给出一棵二叉树 {3,9,20,#,#,15,7},

    3
   /   9  20
    /     15   7

按照从下往上的层次遍历为:

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

标签

二叉树 队列 二叉树遍历 宽度优先搜索

 1 /**
 2  * Definition of TreeNode:
 3  * class TreeNode {
 4  * public:
 5  *     int val;
 6  *     TreeNode *left, *right;
 7  *     TreeNode(int val) {
 8  *         this->val = val;
 9  *         this->left = this->right = NULL;
10  *     }
11  * }
12  */
13
14
15 class Solution {
16     /**
17      * @param root : The root of binary tree.
18      * @return : buttom-up level order a list of lists of integer
19      */
20 public:
21     vector<vector<int>> levelOrderBottom(TreeNode *root) {
22         // write your code here
23
24         vector<vector<int> > order;
25         queue<TreeNode*> queue;
26         int len;
27
28         if(root == NULL)  {
29             return order;
30         }
31
32         queue.push(root);
33         len = queue.size();
34
35         while(!queue.empty())  {
36             vector<int> base;
37             len = queue.size();
38
39             while(len--)  {
40                 TreeNode *tmp=queue.front();
41                 base.push_back(tmp->val);
42                 queue.pop();
43                 if(tmp->left)
44                     queue.push(tmp->left);
45                 if(tmp->right)
46                     queue.push(tmp->right);
47             }
48             order.push_back(base);
49         }
50
51         vector<vector<int> > order2;
52         int i;
53
54         for(i=order.size()-1; i>=0; i--) {
55             order2.push_back(order[i]);
56         }
57
58         return order2;
59     }
60 };
时间: 2024-10-12 07:29:27

二叉树的层次遍历 II的相关文章

lintcode 中等题:binary tree level order traversal ii 二叉树的层次遍历II

题目 二叉树的层次遍历 II 给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历) 样例 给出一棵二叉树 {3,9,20,#,#,15,7}, 3 / 9 20 / 15 7 按照从下往上的层次遍历为: [ [15,7], [9,20], [3] ] 解题 和上一题的答案反过来 直接每次在list中第一个位置加入当前层结点 /** * Definition of TreeNode: * public class TreeNode { *

107 Binary Tree Level Order Traversal II 二叉树的层次遍历 II

给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7],    3   / \  9  20    /  \   15   7返回其自自底向上的层次遍历为:[  [15,7],  [9,20],  [3]]详见:https://leetcode.com/problems/binary-tree-level-order-traversal-ii/description/ /** *

LeetCode(107): 二叉树的层次遍历 II

Easy! 题目描述: 给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如:给定二叉树 [3,9,20,null,null,15,7], 3 / 9 20 / 15 7 返回其自底向上的层次遍历为: [ [15,7], [9,20], [3] ] 解题思路: 从底部层序遍历其实还是从顶部开始遍历,只不过最后存储的方式有所改变,参见http://www.cnblogs.com/grandyang/p/4051321.html,代码如下

107. 二叉树的层次遍历 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

LeetCode107 树&#183;二叉树的层次遍历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

LeetCode 第107题 二叉树的层次遍历II

给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[ [15,7], [9,20], [3]] 思路: 先递归层次遍历 然后将res倒置 1 class Solution107 { 2 3 List<List<Integer>> res = new ArrayList<>(); 4

[LeetCode] 107. 二叉树的层次遍历 II

题目链接 : https://leetcode-cn.com/problems/binary-tree-level-order-traversal-ii/ 题目描述: 给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 / 9 20 / 15 7 返回其自底向上的层次遍历为: [ [15,7], [9,20], [3] ] 思路: 与上一题层次遍历一样,只不过输出的

第107题:二叉树的层次遍历II

一. 问题描述 给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9  20 /  \ 15   7 返回其自底向上的层次遍历为: [ [15,7], [9,20], [3] ] 二. 解题思路 本题思路:采用层序遍历和递归的方法进行求解. 步骤一:构建递归函数(全局变量list表存储结果数据,局部表data存储当前一层所有节点) 步骤二:对data表进行

重建二叉树与二叉树的层次遍历

数据结构实验之求二叉树后序遍历和层次遍历 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描写叙述 已知一棵二叉树的前序遍历和中序遍历,求二叉树的后序遍历. 输入 输入数据有多组,第一行是一个整数t (t<1000).代表有t组測试数据.每组包含两个长度小于50 的字符串,第一个字符串表示二叉树的先序遍历序列,第二个字符串表示二叉树的中序遍历序列. 输出 每组第一行输出二叉树的后序遍历序列,第二行输出二叉树的层次遍历序列 演示样例输