Binary Tree Level Order Traversal II

来源:互联网 发布:工程网络计划技术分类 编辑:程序博客网 时间:2024/05/14 02:44

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 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 {public:    vector<vector<int>> levelOrderBottom(TreeNode* root) {        vector<vector<int>> res;        queue<TreeNode*> q;        q.push(root);        q.push(NULL);        if(!root)            return res;        vector<int> row;       // res.push_back(vector<int>(1,root->val));        while(!q.empty()){            if(q.size()==1&&q.front()==NULL)                break;            TreeNode* temp = q.front();            q.pop();            row.push_back(temp->val);            TreeNode* next = q.front();            if(temp->left)                q.push(temp->left);            if(temp->right)                q.push(temp->right);            if(next==NULL){                res.push_back(row);                row.clear();                q.pop();                q.push(NULL);            }        }        reverse(res.begin(),res.end());        return res;    }};
0 0