103.Binary Tree Zigzag Level Order Traversal
来源:互联网 发布:非线性最优化确定参数 编辑:程序博客网 时间:2024/05/01 14:29
103.Binary Tree Zigzag Level Order Traversal
Difficulty:medium
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,null,15,7],
3
/ \
9 20
/ \
15 7
return its zigzag level order traversal as: [ [3], [20,9], [15,7] ]
解题思路
此题是一道关于树这样一个数据结构的展示问题。理解清楚题目中的数据结构的构成,这道题应该是不难解决的。不过要较为注意的几点是,数据的储存方式在单双数行间顺序是不同的。于是要加入基础的判定来区别单双数行的储存。
过程中遇到较为麻烦的事情是因为对于树这个结构很久没有使用(大二上学期之后就没用过了lol),一度不知道该如何存储每一行的信息。不过在复习之后就基本有了思路。
具体思路是扫描搜索上一层的节点的分支之后统计一下具体数目(我用了size保存),在生成下一层的vector时记得判断清楚何时该层结束(利用size)。
另外一个问题在于如何反转vector,不过这个有现成的函数就可以直接使用就好,也即是reverse函数。接下来是具体代码。
具体代码
/** * 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) { queue<TreeNode*> temp; vector<vector<int>> ans; vector<int> temp_ans; TreeNode* node; if(root == NULL) return ans; temp.push(root); bool judge = false; while(!temp.empty()) { int size = temp.size(); temp_ans.clear(); for(int i = 0;i < size;i++) { node = temp.front(); temp.pop(); temp_ans.push_back(node->val); if (node->left != NULL) temp.push(node->left); if (node->right != NULL) temp.push(node->right); } if(judge) { reverse(temp_ans.begin(),temp_ans.end()); } judge = 1 - judge; ans.push_back(temp_ans); } return ans; }};
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 103. Binary Tree Zigzag Level Order Traversal
- 清除MySQL注册信息-重装mysql
- centos7 挂载ntfs盘 usb移动硬盘
- 枚举Enum用法详解
- 蜂鸣器
- 华为OJ放苹果&&整数划分
- 103.Binary Tree Zigzag Level Order Traversal
- C语言:单链表的创建,打印及销毁
- Android 看到什么写什么——关于有时候Android studio编写的时候大R丢失并且import出不来的问题
- Day31、未决信号、有名管道、IPC进程间通讯(消息队列)
- shFlags Introduction
- ibm_system 3650安装
- 数据库创建(CREATE),数据库的修改(Update),数据库的删除(ALERT)
- poj2553 The Bottom of a Graph--Kosaraju算法 & 缩点 & 强连通分量
- Maven之(一)Maven是什么