File tree Expand file tree Collapse file tree 1 file changed +56
-0
lines changed Expand file tree Collapse file tree 1 file changed +56
-0
lines changed Original file line number Diff line number Diff line change
1
+ /*
2
+ 题目:
3
+ 给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
4
+
5
+ 做法:判断是奇数层还是偶数层。
6
+ */
7
+
8
+ /* *
9
+ * Definition for a binary tree node.
10
+ * struct TreeNode {
11
+ * int val;
12
+ * TreeNode *left;
13
+ * TreeNode *right;
14
+ * TreeNode(int x) : val(x), left(NULL), right(NULL) {}
15
+ * };
16
+ */
17
+ class Solution {
18
+ public:
19
+ vector<vector<int >> zigzagLevelOrder (TreeNode* root) {
20
+ vector<vector<int >> rst;
21
+ if (root==NULL ){
22
+ return rst;
23
+ }
24
+
25
+ queue<TreeNode*> que;
26
+ que.push (root);
27
+ bool even=false ;
28
+ while ( !que.empty () ){
29
+ int len=que.size ();
30
+
31
+ vector<int > levelvec;
32
+ for (int i=0 ; i<len; i++){
33
+ TreeNode* p=que.front ();
34
+ que.pop ();
35
+ levelvec.push_back (p->val );
36
+
37
+ if (p->left != NULL ){
38
+ que.push (p->left );
39
+ }
40
+ if (p->right != NULL ){
41
+ que.push (p->right );
42
+ }
43
+ }
44
+
45
+ if (even){// 偶数层
46
+ reverse (levelvec.begin (), levelvec.end ());
47
+ even=false ;
48
+ }else {
49
+ even=true ;
50
+ }
51
+ rst.push_back (levelvec);
52
+ }
53
+
54
+ return rst;
55
+ }
56
+ };
You can’t perform that action at this time.
0 commit comments