您的位置:首页 > 其它

LeetCode: 102_Binary Tree Level Order Traversal | 二叉树自顶向下的层次遍历 | Easy

2014-11-27 16:29 633 查看
题目:Binay Tree Level Order Traversal

Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).

For example:
Given binary tree {3,9,20,#,#,15,7},


如下一棵树



转换之后需要输出这样的形式:



如下,见代码:

struct TreeNode {
int        val;
TreeNode*    left;
TreeNode*    right;
TreeNode():val(0),left(NULL),right(NULL) {}
TreeNode(int x): val(x), left(NULL),right(NULL) {}
};

vector<vector<int> > levelOrderTraversal(TreeNode *root) //非递归的中序遍历(用栈实现)
{

queue<TreeNode *> tree_queue;
vector<vector<int> > tree_vector;
vector<int> svector;

if (NULL == root) {
return tree_vector;
}
TreeNode *pTemp = root;
tree_queue.push(root);
tree_queue.push(NULL); //the end of one level.

while (true) {
TreeNode *pTemp = tree_queue.front();
tree_queue.pop();

if (!pTemp) { //get the null, put vector<> to vector<vector<>>
tree_vector.push_back(svector);
svector.clear();
if (tree_queue.empty())
break;
tree_queue.push(NULL);
}
else {
svector.push_back(pTemp->val);
if (pTemp->left)
tree_queue.push(pTemp->left);
if (pTemp->right)
tree_queue.push(pTemp->right);
}
}
return tree_vector;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐