[LeetCode] Binary Tree Zigzag Level Order Traversal

来源:互联网 发布:路由器开放端口 编辑:程序博客网 时间:2024/05/16 04:45
vector<vector<int> > zigzagLevelOrder(TreeNode *root) {vector<TreeNode*> last_level_node;vector<vector<int>> val_in_level;if (root == NULL){return val_in_level;}last_level_node.push_back(root);vector<TreeNode*> cur_level_node;bool zigzag = true;do{cur_level_node.clear();vector<int> val;for (int i = 0; i < last_level_node.size(); i++){TreeNode* cur_node = last_level_node[i];TreeNode* left_node = NULL;TreeNode* right_node = NULL;if(cur_node != NULL){left_node = cur_node->left;right_node = cur_node->right;if (zigzag){val.push_back(cur_node->val);} else{val.insert(val.begin(), cur_node->val);}if (left_node != NULL){cur_level_node.push_back(left_node);}if (right_node != NULL){cur_level_node.push_back(right_node);}}}val_in_level.push_back(val);zigzag = !zigzag;last_level_node = cur_level_node;}while (!cur_level_node.empty());return val_in_level;}
思路和Binary Tree Level Order Traversal类似,只是多加一个标识,保证前一次正向存数值,下一次则反向存数值;前一次反向存数值,下一次则正向存数值
0 0
原创粉丝点击