[LeetCode]Binary Tree Level Order Traversal
来源:互联网 发布:一淘和淘宝哪个比较好 编辑:程序博客网 时间:2024/06/07 03:38
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]
]
这道题是对给定的一棵二叉树,要求分层遍历,即从上到下、从左至右的顺序访问每个结点并保存。这道题的一个注意点在于,不同层的结点保存在不同的vector容器中。所以,设立两个变量分别保存当前层结点个数curCount和下一层结点的个数nextCount。遍历当前层结点时,每访问一个结点,curCount减一,同时计算当前结点的左右孩子个数n,并nextCount+=n。当curCount减为0时表示当前层已经遍历结束,并将nextCount的值赋给curCount,nextCount清零。重复上述操作,直至队列为空。
下面贴上代码:
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: vector<vector<int> > levelOrder(TreeNode *root) { vector<vector<int> > ans; queue<TreeNode*> q; if (root == NULL) return ans; q.push(root); int nextCount = 0; int curCount = 1; vector<int> temp; while(!q.empty()){ TreeNode* p = q.front(); q.pop(); temp.push_back(p->val); if (p->left){ q.push(p->left); nextCount++; } if (p->right){ q.push(p->right); nextCount++; } curCount--; if (!curCount){ ans.push_back(temp); temp=vector<int>(); curCount = nextCount; nextCount = 0; } } return ans; }};
0 0
- LeetCode[Tree]: Binary Tree Level Order Traversal
- *(leetcode) Binary Tree Level Order Traversal (tree)
- [leetcode][tree] Binary Tree Level Order Traversal
- LeetCode: Binary Tree Level Order Traversal
- LeetCode: Binary Tree Zigzag Level Order Traversal
- LeetCode: Binary Tree Level Order Traversal II
- [LeetCode]Binary Tree Level Order Traversal
- [LeetCode]Binary Tree Level Order Traversal II
- [LeetCode]Binary Tree Zigzag Level Order Traversal
- LeetCode Binary Tree Level Order Traversal
- LeetCode Binary Tree Level Order Traversal II
- LeetCode Binary Tree Zigzag Level Order Traversal
- [Leetcode] Binary Tree Level Order Traversal
- [Leetcode] Binary Tree Level Order Traversal II
- [Leetcode] Binary Tree Zigzag Level Order Traversal
- Leetcode: Binary Tree Zigzag Level Order Traversal
- LeetCode Binary Tree Level Order Traversal
- LeetCode Binary Tree Level Order Traversal II
- 实习的是那些事儿一
- 基于Qt移动应用的消息推送服务原理与应用
- keil多文件组织方法 - 道客巴巴
- jQuery替换textarea中的换行(转)
- 离职的正确原因
- [LeetCode]Binary Tree Level Order Traversal
- JSP分页(MySql+c3p0+dbutils)
- WebDriver中执行JavaScript
- eclipse cocos2dx Couldn't load cocos2dcpp from loader
- O(n)时间求字符串的最长回文子串
- ssh中数据库配置文件加密方法
- 佐臻Jorjin WLAN/BT/FM 模组WG7310 WLAN关闭后,蓝牙无法打开
- luci的国际化(多语言)
- vim自动补全之搭建