赞
踩
给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
例如: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回锯齿形层次遍历如下: [ [3], [20,9], [15,7] ]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-traversal
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution { public: vector<vector<int>> zigzagLevelOrder(TreeNode* root) { vector<vector<int>> ans; if (!root) return ans; deque<TreeNode*> q; q.push_back(root); bool flag = true; TreeNode* tmp; while (!q.empty()) { int Size = q.size(); vector<int> tmp_vec; while (Size) { if (flag) { //前取后放 tmp = q.front(); q.pop_front(); if (tmp->left) q.push_back(tmp->left); // 下一层顺序存放至尾 if (tmp->right) q.push_back(tmp->right); } else { // 后取前放 tmp = q.back(); q.pop_back(); if (tmp->right) q.push_front(tmp->right); // 下一层逆序存放至首 if (tmp->left) q.push_front(tmp->left); } tmp_vec.push_back(tmp->val); --Size; } flag = !flag; ans.push_back(tmp_vec); } return ans; } };
参考:https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-traversal/solution/c-shuang-duan-dui-lie-ji-bai-100-by-karlzhang/
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。