1. 程式人生 > 其它 >107.二叉樹的層次遍歷II C++

107.二叉樹的層次遍歷II C++

技術標籤:演算法

題目:給定一個二叉樹,返回其節點值自底向上的層次遍歷。 (即按從葉子節點所在層到根節點所在的層,逐層從左向右遍歷)

/**
 * 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>> result; queue<TreeNode*>q1; if(root) q1.push(root); while(!q1.empty()) { int len=q1.size(); vector<int>v1; for
(int i=0;i<len;++i) { TreeNode* node = q1.front(); v1.push_back(node->val); if(node->left) q1.push(node->left); if(node->right) q1.push(node->right); q1.
pop(); } //result.insert(result.begin(),v1);//法1.頭插 result.push_back(v1); } reverse(result.begin(),result.end());//法2.反轉陣列 return result; } };