leetcode刷题日记——Binary Tree Level Order Traversal
来源:互联网 发布:收淘宝卖家号 编辑:程序博客网 时间:2024/05/16 17:09
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],
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]
问题分析:题目所要结果就是二叉数的广度优先搜索的遍历。但是题目目标和一般的广度优先搜索略有区别,就是需要把遍历的序列按照层次关系保存起来,所以单纯的用一个队列来实现,并不能实现题目的目标,这里采用了一个辅助的队列,然后交替的去保存每一层的元素,然后再交替访问二个队列,将数据以层次关系保存到数组中。实现代码如下:
/** * Definition for a binary tree node. * 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>> travel; queue<TreeNode*> duilie1,duilie2; if(root==NULL) return travel; duilie1.push(root); vector<int> aa; while((!duilie1.empty())||(!duilie2.empty())){ if(!duilie1.empty()){ while(!duilie1.empty()){ TreeNode *p=duilie1.front(); aa.push_back(p->val); duilie1.pop(); if(p->left!=NULL) duilie2.push(p->left); if(p->right!=NULL) duilie2.push(p->right); } travel.push_back(aa); aa.clear(); } if(!duilie2.empty()){ while(!duilie2.empty()){ TreeNode *p=duilie2.front(); aa.push_back(p->val); duilie2.pop(); if(p->left!=NULL) duilie1.push(p->left); if(p->right!=NULL) duilie1.push(p->right); } travel.push_back(aa); aa.clear(); } } return travel; }};
0 0
- leetcode刷题日记——Binary Tree Level Order Traversal
- leetcode刷题日记—— Binary Tree Level Order Traversal II
- [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
- 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
- Python学习——leetcode(Binary Tree Level Order Traversal)
- LeetCode——Binary Tree Level Order Traversal
- LeetCode——Binary Tree Level Order Traversal II
- leetcode——Binary Tree Level Order Traversal
- leetcode 102 —— Binary Tree Level Order Traversal
- leetcode 103 —— Binary Tree Zigzag Level Order Traversal
- leetcode 107 —— Binary Tree Level Order Traversal II
- Leetcode——107. Binary Tree Level Order Traversal II
- 使用soot和graphviz画Java的控制流图
- 数据结构小结 (二)链表
- AFNetworking使用
- [hdu 1348] Wall · 凸包
- poj 2777 Count Color(线段树+染色问题)
- leetcode刷题日记——Binary Tree Level Order Traversal
- Brocade交换机配置DAI(Dynamic ARP Inspection)和DHCP Snooping
- python核心编程-实例的默认参数
- JAVA并发编程笔记五
- 关于swift的访问级别
- Android架构简洁之道
- 华为手机使umeng分享popwindow被底部导航栏挡住问题
- Aexi(8)-Caret位置标记的再思考
- 《UML之用例图》