• Binary Tree Level Order Traversal 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,#,#,15,7},

        3
       / 
      9  20
        /  
       15   7

    return its bottom-up level order traversal as:

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

    C++:
    /**
     * 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) return res; //防止为空
            
            traverse(root,1,res);
            std:reverse(res.begin(),res.end());
            return res;
        }
        
        //通过递归的手段解决
        void traverse(TreeNode* root,size_t level,vector<vector<int>> & res)
        {
            if(!root) return;
            
            if(level>res.size())
            {
                res.push_back(vector<int>());
            }
            res[level-1].push_back(root->val);
            
            //处理下一层节点的数据,不断向下延伸
            traverse(root->left ,level+1,res);
            traverse(root->right,level+1,res);
        }
    };

    此题可以理解为二叉树翻转记录吗?

    使用递归手段解决,一层层节点往下展开;调用stl去进行排序。

    此题可以改进,即每层的数据进行逆序,但是这个也较好解决。

    此题请问谁有C语言解法,求指导!

  • 相关阅读:
    ucore 物理内存探测 lab2 附录A&B
    git diff 笔记
    操作系统Lab1 详解(boot|kern/debug)
    ucore os 前初始化
    第五讲 计算机体系结构 内存层次
    Django 的学习(1) 从建立到数据库操作
    ucore os 初始化
    操作系统 Lab1
    makefile 语法笔记 3
    flex布局注意事项
  • 原文地址:https://www.cnblogs.com/jason1990/p/4639225.html
Copyright © 2020-2023  润新知