题目
解析
层次遍历改动:根据层数判断是否翻转vector
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param root TreeNode类
* @return int整型vector<vector<>>
*/
vector<vector<int> > zigzagLevelOrder(TreeNode* root) {
// write code here
vector<vector<int>> res;
if(root==nullptr)return res;
int flag = false;
queue<TreeNode*> q;
q.push(root);
while(!q.empty()){
vector<int> level;
int size = q.size();
while(size--){
TreeNode *node=q.front();
q.pop();
level.push_back(node->val);
if(node->left!=nullptr)q.push(node->left);
if(node->right!=nullptr)q.push(node->right);
}
if(flag)reverse(level.begin(), level.end());
flag = flag==true?false:true;
res.push_back(level);
}
return res;
}
};

本文介绍了一种二叉树的特殊遍历方法——之字形层序遍历,并提供了一个C++实现示例。该方法通过判断当前层的奇偶数来决定是否反转每层节点的值,最终返回所有层节点值组成的列表。
5217

被折叠的 条评论
为什么被折叠?



