107.LeetCode Binary Tree Level Order Traversal II(easy)[二叉树层次遍历 广度搜索 队列]

来源:互联网 发布:java迭代器的作用 编辑:程序博客网 时间:2024/05/20 13:38

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]]
解题思路:要求按照层次来遍历二叉树,与102处理过程一致,但是通过用inverse迭代器复制构造新的函数完成。
/** * 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:    void getResult(vector<vector<int> >&result,TreeNode* root,int l)    {         if(l==result.size())         {             vector<int> temp;             result.push_back(temp);         }         result[l].push_back(root->val);         if(root->left != NULL)             getResult(result,root->left,l+1);         if(root->right != NULL)             getResult(result,root->right,l+1);    }        vector<vector<int> > levelOrderBottom(TreeNode* root) {       //用一个level来规定层数,这样可以保证同一层的在一个vector里面        vector<vector<int> > result;        if(root == NULL)            return result;        getResult(result,root,0);        vector<vector<int> > result1(result.rbegin(),result.rend());        return result1;    }};

0 0