/** * 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) { vector<vector<int> > result; if(root == NULL) { return result; } deque<TreeNode *> dq; dq.emplace_back(root); bool direction = true; // true means from left to right while(!dq.empty()) { vector<int> v; deque<TreeNode *> temp; if(direction) { while(!dq.empty()) { TreeNode * node = dq.front(); dq.pop_front(); v.emplace_back(node->val); if(node->left != NULL) { temp.emplace_back(node->left); } if(node->right != NULL) { temp.emplace_back(node->right); } } } else { while(!dq.empty()) { TreeNode * node = dq.back(); dq.pop_back(); v.emplace_back(node->val); if(node->right != NULL) { temp.emplace_front(node->right); } if(node->left != NULL) { temp.emplace_front(node->left); } } } direction = !direction; result.emplace_back(v); swap(temp, dq); } return result; } };
4/14/2014
Leeetcode -- Binary Tree Zigzag Level Order Traversal
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment