关注
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<ctime>
#include<cstring>
#include<cassert>
#include<climits>
#include<iostream>
#include<sstream>
#include<vector>
#include<set>
#include<map>
#include<stack>
#include<queue>
#include<bitset>
#include<algorithm>
#include<iterator>
#include<string>
#include<tuple>
#include<random>
#include <chrono>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
void zigzag(TreeNode* root) {
vector<TreeNode*> pts;
if (NULL == root)
return;
queue<TreeNode*> q;
q.push(root);
int num1 = 1, num2 = 0;
TreeNode* cur = NULL;
while (!q.empty()) {
cur = q.front();
q.pop();
if (cur->left != NULL) {
q.push(cur->left);
num2++;
}
if (cur->right != NULL) {
q.push(cur->right);
num2++;
}
pts.push_back(cur);
num1--;
if (0 == num1) {
pts.push_back(NULL);
num1 = num2;
num2 = 0;
}
}
int n = pts.size();
int rev = 0;
int i, j;
i = -1;
int mid, sum;
while (i < n) {
j = i + 1;
while (j < n && pts[j] != NULL)
j++;
// reverse
if (rev) {
mid = i + (j - i) / 2;
sum = i + j;
for (int x=i+1; x<=mid; x++)
swap(pts[x], pts[sum-x]);
}
rev = !rev;
i = j;
}
for (i=0; i<n; i++)
if (pts[i] != NULL)
printf(" %d ", pts[i]->val);
}
int main() {
TreeNode* root = new TreeNode(1);
root->left = new TreeNode(2);
root->right = new TreeNode(3);
root->left->left = new TreeNode(4);
root->right->left = new TreeNode(5);
root->right->right = new TreeNode(6);
zigzag(root);
return 0;
}
用普通的队列加标记即可实现。
查看原帖
点赞 评论
相关推荐
12-17 10:20
河北工业大学 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 2025年终总结 #
127258次浏览 2139人参与
# 找不到实习会影响秋招吗 #
1398568次浏览 13625人参与
# 实习简历求拷打 #
19466次浏览 223人参与
# 哪些公司笔/面试难度大? #
6922次浏览 31人参与
# 考研人,我有话说 #
156252次浏览 1208人参与
# 秋招遇到的奇葩面试题 #
101114次浏览 416人参与
# 投格力的你,拿到offer了吗? #
154059次浏览 829人参与
# 作业帮求职进展汇总 #
84664次浏览 558人参与
# 秋招被挂春招仍然能投的公司 #
8439次浏览 110人参与
# 简历当中有水分算不算造假? #
154111次浏览 2250人参与
# 携程工作体验 #
18699次浏览 66人参与
# mt对你说过最有启发的一句话 #
40576次浏览 465人参与
# 秋招被确诊为…… #
277039次浏览 1583人参与
# 国庆前的秋招小结 #
265681次浏览 1718人参与
# 什么是优秀的实习经历 #
10523次浏览 236人参与
# 选实习,你更看重哪方面? #
16086次浏览 269人参与
# 你收到了团子的OC了吗 #
1483566次浏览 11811人参与
# 找不到好工作选择GAP真的丢人吗 #
93507次浏览 1006人参与
# 摸鱼被leader发现了怎么办 #
105920次浏览 668人参与
# 担心入职之后被发现很菜怎么办 #
267270次浏览 1137人参与

