leetcode-Binary Tree Zigzag Level Order Traversal
来源:互联网 发布:淘宝被差评有什么影响 编辑:程序博客网 时间:2024/04/30 11:46
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,#,#,15,7}
,
3 / \ 9 20 / \ 15 7
return its zigzag level order traversal as:
[ [3], [20,9], [15,7]]
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 \ 5The above binary tree is serialized as
"{1,2,3,#,#,4,#,#,5}"
.基础题,二叉树的层次遍历。
/** * 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> > zigzagLevelOrder(TreeNode *root) { // IMPORTANT: Please reset any member data you declared, as // the same Solution instance will be reused for each test case. vector<vector<int> > ret; if (root == NULL) return ret; vector<int> nodes; queue<TreeNode*> q; TreeNode *nodePtr; // levelNodesNum: the number of nodes in next level to traverse int levelNodesNum = 1, nums, i; int zz = 0; // If 1, from left to right, or, from right to left q.push(root); nodes.push_back(root->val); ret.push_back(nodes); while (!q.empty()) { i = 0; nums = 0; nodes.clear(); // Traverse the nodes of the same level, and push the nodes of next level while (i < levelNodesNum) { nodePtr = q.front(); if (nodePtr->left != NULL) { q.push(nodePtr->left); nodes.push_back(nodePtr->left->val); ++nums; } if (nodePtr->right != NULL) { q.push(nodePtr->right); nodes.push_back(nodePtr->right->val); ++nums; } q.pop(); ++i; } levelNodesNum = nums; // Update the number of nodes of the next level if (nodes.empty()) { break; } if (zz) { ret.push_back(nodes); zz = 0; } else { reverse(nodes.begin(), nodes.end()); // Right to left ret.push_back(nodes); zz = 1; } } return ret; }};
- 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
- 谈谈程序在内存中的分布
- 多项式参数估计——最小二乘法
- 判别模型(descriminative model)+生成模型(generative model)
- C语言连接数据库
- 1010:平均绩点
- leetcode-Binary Tree Zigzag Level Order Traversal
- Genesis-3D 入门教程—18.基本UI及运行
- Java备忘录模式(Memento)
- HDU 3531 Match(树状数组)
- 快速傅里叶变换(蝶形算法)
- JavaWeb开发中遇到的错误:org.apache.catalina.core.StandardWrapperValve invoke
- CPtrList操作(插入,删除特定元素,删除全部)
- 语音识别工具箱之kaldi介绍
- 1013:摆积木