lintcode 二叉树的层次遍历||

作者: yzawyx0220 | 来源:发表于2017-01-09 15:04 被阅读43次

给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历)
样例
给出一棵二叉树 {3,9,20,#,#,15,7},
3
/
9 20
/
15 7
按照从下往上的层次遍历为:
[
[15,7],
[9,20],
[3]
]
题目链接:http://www.lintcode.com/zh-cn/problem/binary-tree-level-order-traversal-ii/
跟上一道层次遍历的题目是相同的,为了倒过来访问,只需维护一个栈,把每层的结果亚茹栈中即可。

/**
 * Definition of TreeNode:
 * class TreeNode {
 * public:
 *     int val;
 *     TreeNode *left, *right;
 *     TreeNode(int val) {
 *         this->val = val;
 *         this->left = this->right = NULL;
 *     }
 * }
 */
 
 
class Solution {
    /**
     * @param root : The root of binary tree.
     * @return : buttom-up level order a list of lists of integer
     */
public:
    vector<vector<int>> levelOrderBottom(TreeNode *root) {
        // write your code here
        vector<vector<int> > result;
        if (!root) return result;
        queue<TreeNode *> q;
        stack<vector<int> > s;
        q.push(root);
        int len;
        while (!q.empty()) {
            vector<int> res;
            len = q.size();
            while (len--) {
               TreeNode *temp = q.front(); 
               res.push_back(temp->val);
               q.pop();
               if (temp->left) q.push(temp->left);
               if (temp->right)q.push(temp->right);
            }
            s.push(res);
        }
        while (!s.empty()) {
            result.push_back(s.top());
            s.pop();
        }
        return result;
    }
};

相关文章

  • 二叉树的蛇形层次遍历(LeetCode.103)

    题目 解析 首先参考二叉树的层次遍历层次遍历二叉树(LeetCode--102二叉树的层次遍历)[https://...

  • 二叉树遍历

    二叉树遍历(非递归写法) 先序遍历 中序遍历 后序遍历 层次遍历 给定一个二叉树,返回其按层次遍历的节点值。 (即...

  • 二叉树的基本算法

    一、二叉树的递归遍历 二、二叉树的层次遍历 二叉树的层次遍历是指二叉树从上到下,从左到右遍历数据。同一层中的节点访...

  • 二叉树的层次遍历

    三道层次遍历题,同一个模板,这边用到的是两个队列 二叉树的层次遍历 LeetCode题目地址 二叉树的层次遍历 加...

  • js刷林扣 lintcode 之二叉树的构造和前中后序遍历

    66/67/68. 二叉树的前/中/后序遍历 【03-09】 分别对应的lintcode地址为二叉树的前序遍历二叉...

  • 二叉树的层次遍历

    一、二叉树的层次遍历原理 如图所示为二叉树的层次遍历,即按照箭头所指方向,按照1、2、3、4的层次顺序,对二叉树中...

  • 二叉树 基础操作

    二叉树的使用 二叉树结构 先序创建二叉树 DFS 先序遍历二叉树 中序遍历二叉树 后序遍历二叉树 BFS 层次遍历...

  • lintcode 二叉树的层次遍历||

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

  • lintcode 二叉树的层次遍历

    给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问)样例给一棵二叉树 {3,9,20,#,#,15,7} :...

  • 数据结构重学日记(二十二)二叉树的层次遍历

    二叉树的层次遍历也属于非递归遍历,和之前先序、中序、后序遍历的区别在于层次遍历需要借助队列来实现。 层次遍历的操作...

网友评论

    本文标题:lintcode 二叉树的层次遍历||

    本文链接:https://www.haomeiwen.com/subject/xmhhbttx.html