LeetCode107. Order Traversal of Binary Tree II

topic

107. Order Traversal of Binary Tree II

Given the root node of the binary tree root, return its node value Bottom -up order traversal. (That is, from the layer where the leaf node is located to the layer where the root node is located, traversing layer by layer from left to right)

Example 1:
insert image description here

输入:root = [3,9,20,null,null,15,7]
输出:[[15,7],[9,20],[3]]

Example 2:

输入:root = [1]
输出:[[1]]

Example 3:

输入:root = []
输出:[]

hint:

  • The number of nodes in the tree is within the [0, 2000]range
  • -1000 <= Node.val <= 1000

code

/**
 * 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;                                // 声明一个辅助队列
        vector<vector<int>> result;
        if (root != nullptr) que.push(root); 
        while (!que.empty()) {
    
    
            int size = que.size();  
            vector<int> vec;                                 //保存每一层结点的数值向量
            for (int i = 0; i < size; i++) {
    
                     //遍历每一层结点
                TreeNode* s = que.front();
                vec.push_back(s->val);                       //取队头的结点中的元素
                que.pop();                                   //取完队头结点的元素,则将队头结点出队
                if (s->left != nullptr) que.push(s->left);   //左孩子不空则入队
                if (s->right != nullptr) que.push(s->right); //右孩子不空则入队
            }
            result.push_back(vec);
        }
        reverse(result.begin(), result.end());
        return result;
    }
};

Guess you like

Origin blog.csdn.net/Star_ID/article/details/126399841