LeetCode --- 107. Binary Tree Level Order Traversal II
来源:互联网 发布:刚买的域名怎么访问 编辑:程序博客网 时间:2024/05/24 22:43
题目链接:Binary Tree Level Order Traversal II
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] ]
confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.
OJ's Binary Tree Serialization:
The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.
Here's an example:
1 / \ 2 3 / 4 \ 5
The above binary tree is serialized as "{1,2,3,#,#,4,#,#,5}".
这道题的要求是从下往上分层遍历二叉树。
和Binary Tree Level Order Traversal同样的思路,只不过在最后需要将数组反转即可。
由于需要把每层的节点分别放入到数组中,因此需要引入变量n记录每层的节点数量。剩下的,就是广度优先搜索的方法了。
广度优先搜索算法(Breadth First Search),又叫宽度优先搜索,或横向优先搜索。从根节点开始,沿着树的宽度遍历树的节点。如果所有节点均被访问,则算法中止。借助队列数据结构,由于队列是先进先出的顺序,因此可以先将左子树入队,然后再将右子树入队。这样一来,左子树结点就存在队头,可以先被访问到。
时间复杂度:O(n)
空间复杂度:O(n)
1 class Solution 2 { 3 public: 4 vector<vector<int> > levelOrderBottom(TreeNode *root) 5 { 6 vector<vector<int> > vvi; 7 8 if(NULL == root) 9 return vvi;10 11 queue<TreeNode *> q;12 q.push(root);13 while(!q.empty())14 {15 vector<int> vi;16 for(int i = 0, n = q.size(); i < n; ++ i)17 {18 TreeNode *temp = q.front();19 q.pop();20 if(temp -> left != NULL)21 q.push(temp -> left);22 if(temp -> right != NULL)23 q.push(temp -> right);24 vi.push_back(temp -> val);25 }26 vvi.push_back(vi);27 }28 reverse(vvi.begin(), vvi.end());29 return vvi;30 }31 };
转载请说明出处:LeetCode --- 107. Binary Tree Level Order Traversal II
- [LeetCode]102. Binary Tree Level Order Traversal&107. Binary Tree Level Order Traversal II
- LeetCode: Binary Tree Level Order Traversal II
- [LeetCode]Binary Tree Level Order Traversal II
- LeetCode Binary Tree Level Order Traversal II
- [Leetcode] Binary Tree Level Order Traversal II
- LeetCode Binary Tree Level Order Traversal II
- [LeetCode] Binary Tree Level Order Traversal II
- 【leetcode】Binary Tree Level Order Traversal II
- [LeetCode]Binary Tree Level Order Traversal II
- [Leetcode]Binary Tree Level Order Traversal II
- [leetcode]Binary Tree Level Order Traversal II
- LeetCode-Binary Tree Level Order Traversal II
- LeetCode - Binary Tree Level Order Traversal II
- [LeetCode] Binary Tree Level Order Traversal II
- LeetCode | Binary Tree Level Order Traversal II
- LeetCode - Binary Tree Level Order Traversal II
- 【leetcode】Binary Tree Level Order Traversal II
- 【LeetCode】Binary Tree Level Order Traversal II
- Launcher3壁纸功能分析
- [MFC] Combo Box两种模式下显示文本的设置
- bat putty shell 连携
- linux下实时查看tomcat运行日志
- 文章标题
- LeetCode --- 107. Binary Tree Level Order Traversal II
- HTTP Header 详解
- LeetCode --- 108. Convert Sorted Array to Binary Search Tree
- 第六周项目6——复数模板类
- ODBC && OLEDB
- self-cultivation
- C字符串与C++字符串的深入理解
- iOS 开发APP时版本更新,版本新特性的设置
- storyboard快速布局、约束怎么快速添加、拉线约束的快捷键表