首页 > 其他 > 详细

leetcode103——二叉树的锯齿形层次遍历

时间:2020-11-05 08:52:18      阅读:27      评论:0      收藏:0      [点我收藏+]

技术分享图片

 1 /*
 2  * @lc app=leetcode.cn id=103 lang=cpp
 3  *
 4  * [103] 二叉树的锯齿形层次遍历
 5  */
 6 
 7 // @lc code=start
 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     //交替行的输出,考虑用一个flag标志位
20 
21     /*利用二叉树的层序遍历,然后用一个变量来记录树的深度(0、1、2...),
22     深度为偶数,从左向右添加这层的节点值;深度为奇数,从右向左添加这层的节点值。*/
23     vector<vector<int>> zigzagLevelOrder(TreeNode* root) {
24        if(!root) return {};   //vector为空时的返回值
25         vector<vector<int>> res;
26         queue<TreeNode*> q;
27         int flag=0;  // 标志位,判断哪一行翻转
28         q.push(root);
29 
30         while(!q.empty()){
31             vector<int> tmp;
32             int len=q.size();
33             for(int i=0;i<len;i++){
34                 TreeNode* node=q.front();
35                 q.pop();
36                 tmp.push_back(node->val);
37                 if(node->left) q.push(node->left);
38                 if(node->right) q.push(node->right);
39             }
40             if(flag%2==1) reverse(tmp.begin(),tmp.end());
41             flag++;
42             res.push_back(tmp);
43         }
44         return res;
45     }
46 };
47 // @lc code=end

 

leetcode103——二叉树的锯齿形层次遍历

原文:https://www.cnblogs.com/yaodao12/p/13929349.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!