Binary Tree Level Order Traversal II

来源:互联网 发布:c语言制表符是什么 编辑:程序博客网 时间:2024/06/16 16:34

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,#,#,15,7},

    3   / \  9  20    /  \   15   7

return its bottom-up level order traversal as:

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

还是二叉树的层次遍历,之后返回结果要从底层开始,偷了个懒,直接把从顶层开始的结果倒过来,哈哈哈哈~~~~

/** * Definition for binary tree * 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) {queue<TreeNode*>q1;vector<vector<int>>ovec,ret;vector<int>ivec;TreeNode *temp = root;if(!temp)    return ret;q1.push(temp);do{queue<TreeNode*>q2;;while (!q1.empty()){temp = q1.front();ivec.push_back(temp->val);q1.pop();if (temp->left)q2.push(temp->left);if (temp->right)q2.push(temp->right);}ovec.push_back(ivec);ivec.clear();q1 = q2;} while (!q1.empty());for (vector<vector<int>>::size_type i = 0; i < ovec.size(); ++i)    ret.push_back(ovec[ovec.size() - 1 - i]);    return ret;}};


0 0
原创粉丝点击