LeetCode 103. Binary Tree Zigzag Level Order Traversal
来源:互联网 发布:安卓软件开发编程论坛 编辑:程序博客网 时间:2024/06/18 15:26
103. Binary Tree Zigzag Level Order Traversal
Description
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).
For example:
Given binary tree [3,9,20,null,null,15,7],
3 / \ 9 20 / \ 15 7
return its zigzag level order traversal as:
[ [3], [20,9], [15,7]]
思路
Z 字型层序遍历二叉树,和普通的层序遍历差不多。只是在存储和输出每层的数据时要注意一下。
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) { if (root == NULL) return {}; deque<TreeNode*> dq; vector<vector<int>> ret; dq.push_back(root); int level = 0; while( !dq.empty() ) { int cur_size = dq.size(); vector<int> tmp; std::reverse(dq.begin(), dq.end()); if (level % 2 == 0) { for (int i = 0; i < cur_size; i++) { TreeNode* node = dq.front(); tmp.push_back(node->val); dq.pop_front(); if (node->left) dq.push_back(node->left); if (node->right) dq.push_back(node->right); } } else { for (int i = 0; i < cur_size; i++) { TreeNode * node = dq.front(); tmp.push_back(node->val); dq.pop_front(); if (node->right) dq.push_back(node->right); if (node->left) dq.push_back(node->left); } } ret.push_back(tmp); level++; } return ret; }};
分析
时间复杂度:O(V+E)
空间复杂度:O(V+E)
ps:这道题在百度面试的时候考过
阅读全文
0 0
- 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
- 【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
- LeetCode:Binary Tree Zigzag Level Order Traversal
- [LeetCode] Binary Tree Zigzag Level Order Traversal
- 第十三周项目3
- Day013
- “科林明伦杯”哈尔滨理工大学第七届程序设计团队赛 I.Aggie’s Tasks(带权的LIS)
- ObjectBox入门
- js function.call()函数
- LeetCode 103. Binary Tree Zigzag Level Order Traversal
- python多线程的使用
- 机器人走方格
- opencl之code builder学习教程2
- jquery实现web备忘录store.js
- 19.Windows跨模块内存管理的浅薄理解
- docekr8 使用 Docker 镜像
- 树和森林
- BottomTabBar