Binary Tree Level Order Traversal II

来源:互联网 发布:核动力研究设计院知乎 编辑:程序博客网 时间:2024/05/18 02:59

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.

BFS,宽度优先搜索,利用队列把头结点放入对头,依次让每一个队列的root出队,后面的队列进队。 然后进行倒序。

class Solution {public:   vector<vector<int>> levelOrderBottom(TreeNode* root){vector<vector<int>> levelOrderStore;if (root==NULL)return levelOrderStore;queue<TreeNode *>q;q.push(root);int count=1;int level=0;vector<int> tmp(0);while (!q.empty())//q.root{tmp.clear();level=0;for (int i=0;i<count;i++)//level{root=q.front(); //every root.tmp.push_back(q.front()->val); //every root.q.pop();if (root->left!=NULL){q.push(root->left);++level;}if (root->right!=NULL){q.push(root->right);++level;}}count=level;vector<vector<int>>::iterator it;it=levelOrderStore.begin();levelOrderStore.insert(it,tmp);}return levelOrderStore;}};


0 0
原创粉丝点击