zoukankan      html  css  js  c++  java
  • 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语言解法,求指导!

  • 相关阅读:
    mybatis
    eclipse日志
    最大值与最小值问题
    常见的缓存算法设计策略
    常用垃圾回收算法
    Java中对象的三种状态
    Java中的内存泄漏问题
    单例模式
    约瑟夫环问题
    矩形覆盖问题
  • 原文地址:https://www.cnblogs.com/jason1990/p/4639225.html
Copyright © 2011-2022 走看看