加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

【一天一道LeetCode】#103. Binary Tree Zigzag Level Order Tra

发布时间:2020-12-13 21:09:51 所属栏目:PHP教程 来源:网络整理
导读:1天1道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder‘s Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (1)题目 来源: https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/ Given a bina

1天1道LeetCode

本系列文章已全部上传至我的github,地址:ZeeCoder‘s Github
欢迎大家关注我的新浪微博,我的新浪微博
欢迎转载,转载请注明出处

(1)题目

来源: https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/

Given a binary tree,return the zigzag level order traversal of its nodes’ values. (ie,from left to right,then right to left for >the next level and alternate between).

For example:
Given binary tree [3,9,20,null,15,7],

3
/
9 20
/
15 7
return its zigzag level order traversal as:

[
[3],
[20,9],
[15,7]
]

(2)解题

题目大意:给定1个2叉树,按层序遍历输出,层数从1开始,奇数层从左往右输出,偶数层从右往左输出。
解题思路:上1题【1天1道LeetCode】#102. Binary Tree Level Order Traversal采取queue的数据结构来层序输出,每层都是按从左往右的顺序输出,所以,这1题可以采取deque的数据结构,根据奇数和偶数层来判断输出顺序。
详细解释见代码:

/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x),left(NULL),right(NULL) {} * }; */ class Solution { public: vector<vector<int>> zigzagLevelOrder(TreeNode* root) { vector<vector<int>> ret; if(root==NULL) return ret; deque<TreeNode*> deq;//用来寄存每层的节点 deq.push_back(root);//将根节点放入queue等待处理 int n = 1;//记录层数 while(!deq.empty()) { vector<int> tempnode; deque<TreeNode*> temp;//寄存下1层的节点 while(!deq.empty()){ if(n%2==1)//奇数层 { TreeNode* tn = deq.front();//从头开始取节点 tempnode.push_back(tn->val); deq.pop_front(); if(tn->left!=NULL) temp.push_back(tn->left);//从左往右放入节点 if(tn->right!=NULL) temp.push_back(tn->right); } else//偶数层 { TreeNode* tn = deq.back();//从尾部开始取节点 tempnode.push_back(tn->val); deq.pop_back(); if(tn->right!=NULL) temp.push_front(tn->right);//从右往左放入节点 if(tn->left!=NULL) temp.push_front(tn->left); } } deq = temp; ret.push_back(tempnode); n++;//处理下1层 } return ret; } };

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读