Binary Tree Zigzag Level Order Traversal——Difficulty:Medium
来源:互联网 发布:软件开发环境 编辑:程序博客网 时间:2024/04/23 20:07
Problem :
Given a binary tree, return the zigzag level order traversal of its nodes’ values. (ie, from left to right, then right to left for the next level and alternate between).
Example:
For example:Given binary tree [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7return its zigzag level order traversal as:[ [3], [20,9], [15,7]]
**
Algorithm:
**
很明显要用宽度优先遍历,因为这个题目要求要的输出很节点在的高度有关,所以普通的宽度优先遍历不行,在我下面的非递归方法中,需要给每一层后面加一个NULL来标明一层的结束,这样就可以明确什么时候进入了下一层。有N个节点,那么时间复杂度就是O(N)
**
Code:
/** * 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>> zigzagLevelOrder(TreeNode* root) { vector<vector<int> > re; if(root==NULL) return re; queue<TreeNode*> q; q.push(root); q.push(NULL); int tag=1; vector<int> v; while(!q.empty()) { TreeNode* t=q.front();q.pop(); if(t!=NULL) { v.push_back(t->val); if(t->right)q.push(t->right); if(t->left)q.push(t->left); } else { if(tag==0) { re.push_back(v); } else { reverse(v.begin(),v.end()); re.push_back(v); } tag=!tag; v.clear(); if(!q.empty()) q.push(NULL); } } return re; }};
0 0
- Binary Tree Zigzag Level Order Traversal——Difficulty:Medium
- Binary Tree Zigzag Level Order Traversal(medium)
- LeetCode刷题(C++)——Binary Tree Zigzag Level Order Traversal(Medium)
- Leetcode 103. Binary Tree Zigzag Level Order Traversal (Medium) (cpp)
- leetcode 103 —— Binary Tree Zigzag Level Order Traversal
- 算法系列——Binary Tree Zigzag Level Order Traversal
- Algorithms—103.Binary Tree Zigzag Level Order Traversal
- LeetCode103—Binary Tree Zigzag Level Order Traversal
- LeetCode: Binary Tree Zigzag Level Order Traversal
- [LeetCode]Binary Tree Zigzag Level Order Traversal
- LeetCode Binary Tree Zigzag Level Order Traversal
- [Leetcode] Binary Tree Zigzag Level Order Traversal
- Leetcode: Binary Tree Zigzag Level Order Traversal
- LeetCode Binary Tree Zigzag Level Order Traversal
- [LeetCode] Binary Tree Zigzag Level Order Traversal
- [Leetcode] Binary Tree Zigzag Level Order Traversal
- Binary Tree Zigzag Level Order Traversal
- 【leetcode】Binary Tree Zigzag Level Order Traversal
- 知识点二:文件的输入和输出
- hdu 5074
- Java之正则表达式
- C 自定义输入函数
- 基于spark的大数据提取校验框架
- Binary Tree Zigzag Level Order Traversal——Difficulty:Medium
- 总结10
- 知识点三:错误与异常
- BZOJ4444: [Scoi2015]国旗计划 解题报告
- PHP面试常用算法
- 安卓中的特殊服务:IntentService
- [bzoj 2190] [SDOI2008]仪仗队:欧拉函数,线性筛
- HDU 4093 2011上海区域赛 Xavier is Learning to Count (FFT+容斥原理)
- leetcode相加和的問題