您的位置:首页 > 其它

Binary Tree Level Order Traversal II

2013-06-04 10:24 204 查看
Q: 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],
]

按层(从上往下)输出二叉树的结点值。

A:vector insert方法的使用。每次访问到新的一层节点时,在result前部插入新的vector<int>.


struct QueueNode{
TreeNode *tree;
int level;
QueueNode(TreeNode *t,int l):tree(t),level(l){}
};
class Solution {
public:
vector<vector<int> > levelOrderBottom(TreeNode *root) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<vector<int>> result;
if(!root)
return result;

queue<QueueNode> q;
int levelcount = -1;
q.push(QueueNode(root,0));
while(!q.empty())
{
QueueNode qNode = q.front();
q.pop();
if(qNode.level!=levelcount)
{
vector<int> set;
result.insert(result.begin(),set);
levelcount++;
}
result[0].push_back(qNode.tree->val);
if(qNode.tree->left)
q.push(QueueNode(qNode.tree->left,qNode.level+1));
if(qNode.tree->right)
q.push(QueueNode(qNode.tree->right,qNode.level+1));
}
return result;
}
};


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: