Leetcode 102.Binary Tree Level Order Traversal

原题地址:https://leetcode.com/problems/binary-tree-level-order-traversal/description/

题目描述

Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree [3,9,20,null,null,15,7]
return its zigzag level order traversal as:
[ [3], [9,20], [15,7] ]

即由上到下由左到右把每一层的节点值放在一个vector<int>里,最后返回一个大的vector<vector<int>>

解题思路

和上一题很像,用深度优先遍历,在深度优先里递归左子节点再递归右子节点。创建一个变量deepest保存目前最大深度,同时遍历的时候记录当前深度,如果当前深度比最大深度更大,就更新最大深度,同时创建一个新的vector<int>放到vector<vector<int>>末尾,并把当前节点的值放入那个新的vector<int>的末尾。

代码

/**
 * 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:
    int deepest = 0;
    vector<vector<int> > result;
    
    void DFS(TreeNode* root,int current_level){
        if(root==NULL){
            return ;
        }
        current_level++;
        if(current_level > deepest){
            deepest=current_level;
            vector<int> temp;
            result.push_back(temp);
        }
        result[current_level-1].push_back(root->val);
        DFS(root->left,current_level);
        DFS(root->right,current_level);
    }
    
    vector<vector<int>> levelOrder(TreeNode* root) {
       DFS(root,0);
        return result;
    }
};
TIM截图20170918151604.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,353评论 0 33
  • 目录 简书的 markdown 都不支持 [TOC] 语法……我就不贴目录了。下面按照类别,列出了29道关于二叉树...
    被称为L的男人阅读 8,621评论 0 8
  • LeetCode 刷题随手记 - 第一部分 前 256 题(非会员),仅算法题,的吐槽 https://leetc...
    蕾娜漢默阅读 18,134评论 2 36
  • 总结类型: 完全子树(#222) BST(左右子树值的性质,注意不仅要满足parent-child relatio...
    __小赤佬__阅读 3,987评论 0 0
  • 94. Binary Tree Inorder Traversal 中序 inorder:左节点->根节点->右节...
    Morphiaaa阅读 3,811评论 0 0