LeetCode Algorithms #107 <Binary Tree Level Order Traversal II>

来源:互联网 发布:阿里云华东1和华东2 编辑:程序博客网 时间:2024/05/22 01:47

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]]

思路:
因为需要在迭代的时候插入层的信息,所以考虑再开一个函数进行迭代展开。

注意结果中数据排列的顺序。

解:

/** * 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 {private:    vector<vector<int>> _levelOrderBottom;    public:    void addParticularLevel(TreeNode* node, int level)    {        if(node == nullptr)            return;                if(level == _levelOrderBottom.size())        {            vector<int> particularLevelVals;            _levelOrderBottom.push_back(particularLevelVals);        }        _levelOrderBottom[level].push_back(node->val);        addParticularLevel(node->left, level+1);        addParticularLevel(node->right, level+1);    }        vector<vector<int>> levelOrderBottom(TreeNode* root) {        addParticularLevel(root, 0);        return vector<vector<int> >(_levelOrderBottom.rbegin(), _levelOrderBottom.rend());    }};




0 0
原创粉丝点击