107. Binary Tree Level Order Traversal II(BFS)

来源:互联网 发布:阳江市问政网络平台 编辑:程序博客网 时间:2024/06/05 00:07

1. Description

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,null,null,15,7],

    3   / \  9  20    /  \   15   7

return its bottom-up level order traversal

[  [15,7],  [9,20],  [3]]

2. Analysis

广度优先,逐层取出,存入,最后再逆序。


3. code

/** * 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) {        if(root== NULL) return {};        vector<vector<int> > res;        TreeNode* node = NULL;        //TreNode * left = NULL, *right = NULL;        queue<TreeNode*> tmp;        //int level = 0;        tmp.push(root);        vector<int> t_vec;        t_vec.push_back(root->val);        res.push_back(t_vec);        while(!tmp.empty()) {            t_vec.clear();            for(int i = 0, n = tmp.size(); i < n; i++) {                node = tmp.front();                tmp.pop();                                if(node->left != NULL) {                    t_vec.push_back(node->left->val);                    tmp.push(node->left);                }                if(node->right != NULL) {                    t_vec.push_back(node->right->val);                    tmp.push(node->right);                }            }            if(t_vec.size())                res.push_back(t_vec);        }        reverse(res.begin(), res.end());        return res;    }};