leetcode---Binary Tree Zigzag Level Order Traversal---层次遍历
2016-09-14 22:27
441 查看
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]
]
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]
]
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ struct Node { int level; TreeNode *tnode; Node(){} Node(TreeNode *n, int l) { tnode = n; level = l; } }; vector<vector<int>> ans; class Solution { public: vector<vector<int>> zigzagLevelOrder(TreeNode* root) { ans.clear(); vector<int> tmp; if(root == NULL) return ans; queue<Node> q; q.push(Node(root, 0)); int curLevel = -1; while(!q.empty()) { Node node = q.front(); q.pop(); if(node.tnode->left) q.push(Node(node.tnode->left, node.level+1)); if(node.tnode->right) q.push(Node(node.tnode->right, node.level+1)); if(curLevel != node.level) { if(curLevel != -1) { if(curLevel & 1 == 1) { reverse(tmp.begin(), tmp.end()); } ans.push_back(tmp); } tmp.clear(); curLevel = node.level; } tmp.push_back(node.tnode->val); } if(curLevel & 1 == 1) reverse(tmp.begin(), tmp.end()); ans.push_back(tmp); return ans; } };
相关文章推荐
- LeetCode: 103_Binary Tree Zigzag Level Order Traversal | 二叉树Zigzag层次遍历 | Medium
- LeetCode(Binary Tree Level Order Traversal, 2,Zigzag)二叉树的层次遍历
- [LeetCode] Binary Tree Level Order Traversal 与 Binary Tree Zigzag Level Order Traversal,两种按层次遍历树的方式,分别两个队列,两个栈实现
- 【LeetCode】Binary Tree Zigzag Level Order Traversal 二叉树的锯齿形层次遍历 - Medium(LinkedIn)
- 103.leetcode Binary Tree Zigzag Level Order Traversal(medium)[二叉树层次遍历 栈]
- LeetCode-Binary Tree Zigzag Level Order Traversal-二叉树锯齿层次遍历-二叉树DFS层次遍历
- Binary Tree Zigzag Level Order Traversal (LeetCode) 层序遍历二叉树
- 【遍历二叉树】06二叉树曲折(Z字形)层次遍历II【Binary Tree Zigzag Level Order Traversal】
- leetcode---binary-tree-level-order-traversal-ii---树层次遍历
- 【LeetCode】BinaryTreeLevelOrderTraversal_ii 二叉树的层次遍历 II
- 【leetcode 层序遍历】Binary Tree Zigzag Level Order Traversal
- 102.LeetCode Binary Tree Level Order Traversal(easy)[二叉树层次遍历 广度搜索 队列]
- 【LeetCode】Binary Tree Zigzag Level Order Traversal--- 层序遍历二叉树
- leetcode Binary Tree Zigzag Level Order Traversal 层序遍历 双队列
- 【LeetCode-面试算法经典-Java实现】【103-Binary Tree Zigzag Level Order Traversal(二叉树分层Z字形遍历)】
- leetCode解题报告之Binary Tree Level Order Traversal II,I(二叉树层次遍历)
- LeetCode: 102_Binary Tree Level Order Traversal | 二叉树自顶向下的层次遍历 | Easy
- Binary Tree Zigzag Level Order Traversal (二叉树锯齿形层次遍历)
- LeetCode103 BinaryTreeZigzagLevelOrderTraversal(二叉树Z形层次遍历) Java题解
- Leetcode 107 Binary Tree Level Order Traversal II 二叉树层次遍历与倒转