题目描述
Binary 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},
3
/ \
9 20
/ \
15 7
return its level order traversal as:
[ [3], [9,20], [15,7] ]
confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.
题目分析
树按层遍历
总结
使用队列代码示例
#include
#include
#include
using namespace std;
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
class Solution {
public:
vector
> levelOrder(TreeNode *root) {
vector
> ret; if(root == NULL) return ret; queue
quTree; quTree.push(root); int levelsum = 1;//同一层有多少个结点 vector
tmp; while(!quTree.empty()) { TreeNode* cur = quTree.front(); tmp.push_back(cur->val); quTree.pop(); levelsum--; if(cur->left != NULL) quTree.push(cur->left); if(cur->right != NULL) quTree.push(cur->right); if(levelsum == 0)//本层结束,开始下一层 { levelsum = quTree.size(); ret.push_back(tmp); tmp.clear(); } } return ret; } }; void printvec(vector
A) { for(int i = 0;i
> A, char *name) { printf("%s\n",name); for(int i = 0;i
> out = so.levelOrder(&node1); printvecvec(out,"ret"); } int main(int argc, char *argv[]) { test0(); return 0; }
#include
#include
#include
using namespace std;
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
class Solution {
public:
vector
> levelOrder(TreeNode *root) {
vector
> ret; if(root == NULL) return ret; queue
quTree; quTree.push(root); int levelsum = 1;//同一层有多少个结点 vector
tmp; while(!quTree.empty()) { TreeNode* cur = quTree.front(); tmp.push_back(cur->val); quTree.pop(); levelsum--; if(cur->left != NULL) quTree.push(cur->left); if(cur->right != NULL) quTree.push(cur->right); if(levelsum == 0)//本层结束,开始下一层 { levelsum = quTree.size(); ret.push_back(tmp); tmp.clear(); } } return ret; } }; void printvec(vector
A) { for(int i = 0;i
> A, char *name) { printf("%s\n",name); for(int i = 0;i
> out = so.levelOrder(&node1); printvecvec(out,"ret"); } int main(int argc, char *argv[]) { test0(); return 0; }
推荐学习C++的资料
C++标准函数库
在线C++API查询
本文深入解析了C++实现的二叉树层次遍历算法,包括题目描述、代码示例及关键知识点总结,帮助读者理解并掌握二叉树层次遍历的基本原理与实践。

被折叠的 条评论
为什么被折叠?



