leetcod Binary Tree Level Order Traversal II

来源:互联网 发布:如何拷贝淘宝主图视频 编辑:程序博客网 时间:2024/06/06 09:49

Binary Tree Level Order Traversal II

 

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

confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.


对于反转的操作也是Leetcode惯出的题目,或者说面试惯考的题目,知道怎么应付就好办,顺序遍历,然后reverse就可以了。



class Solution {public:vector<vector<int> > levelOrderBottom(TreeNode *root) {vector<vector<int> > v;if (!root) return v;queue<TreeNode *> qt1;qt1.push(root);queue<TreeNode *> qt2;vector<int> itmedia;while (!qt1.empty()){while (!qt1.empty()){TreeNode *t = qt1.front();qt1.pop();itmedia.push_back(t->val);if (t->left) qt2.push(t->left);if (t->right) qt2.push(t->right);}v.push_back(itmedia);itmedia.clear();qt2.swap(qt1);}reverse(v.begin(), v.end());return v;}};


//2014-2-16 updatevector<vector<int> > levelOrderBottom(TreeNode *root) {vector<vector<int> > rs;if (!root) return rs;queue<TreeNode *> qu[2];qu[0].push(root);bool flag = false;while (!qu[flag].empty()){rs.push_back(vector<int>());while (!qu[flag].empty()){TreeNode *t = qu[flag].front();qu[flag].pop();rs.back().push_back(t->val);if (t->left) qu[!flag].push(t->left);if (t->right) qu[!flag].push(t->right);}flag = !flag;}reverse(rs.begin(), rs.end());return rs;}



1 1
原创粉丝点击