107. 二叉树的层序遍历 II

原题链接:107. 二叉树的层序遍历 II

本质上是进行层序遍历,将存储树每个结点的vector容器内的值进行reverse反转就可以获得从底部自上的层序遍历的值了

如果看代码看不懂,那就跳转该页面:102. 二叉树的层序遍历
全代码:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    vector<vector<int>> levelOrderBottom(TreeNode* root) {
        queue<TreeNode*> que;
        if(root != NULL) que.push(root);
        vector<vector<int>> result;
        while(!que.empty())
        {
            int size = que.size();//获取树的结点数量
            vector<int> vec;
            for(int i = 0; i < size; i++)
            {//遍历树中所有结点
                TreeNode* Node = que.front();
                que.pop();
                vec.push_back(Node ->val);
                if(Node ->left) que.push(Node ->left);
                if(Node ->right) que.push(Node ->right);
            }
            result.push_back(vec);
        }
        reverse(result.begin(),result.end());
        return result;
    }
};

你可能感兴趣的:(数据结构,二叉树)