LeetCode 1609 奇偶数[BFS] HERODING的LeetCode之路
Posted HERODING23
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 1609 奇偶数[BFS] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。
解题思路
读完题目就意识到这是一道标准的BFS模板题,只是需要在模板里面嵌套一些判断而已。首先是定义队列和初始化行数,把root放入队列中,逐层遍历,根据每一层设置每一层的判断变量temp(偶数层就定义为INT_MIN,奇数层就定义为INT_MAX),然后根据每层大小遍历,判断是否单增或者单减,一旦不符合返回false,判断完后要注意把每个节点的子节点放入队列中。每层遍历结束更新层数,遍历完成没有不符合条件的返回true。代码如下:
代码
/**
* Definition for a binary tree node.
* struct TreeNode
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr)
* TreeNode(int x) : val(x), left(nullptr), right(nullptr)
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right)
* ;
*/
class Solution
public:
bool isEvenOddTree(TreeNode* root)
queue<TreeNode*> q;
q.push(root);
int layer = 0;
while(!q.empty())
int size = q.size();
// 判断是否递增或者递减
int temp = layer % 2 == 0 ? INT_MIN : INT_MAX;
for(int i = 0; i < size; i ++)
int demo = q.front()->val;
if(layer % 2 == 0)
if(demo % 2 == 0 || temp >= demo)
return false;
else
if(demo % 2 != 0 || temp <= demo)
return false;
temp = demo;
if(q.front()->left != nullptr)
q.push(q.front()->left);
if(q.front()->right != nullptr)
q.push(q.front()->right);
q.pop();
layer ++;
return true;
;
以上是关于LeetCode 1609 奇偶数[BFS] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 1609. 奇偶树 / 1078. Bigram 分词 / 825. 适龄的朋友(计数排序)
LeetCode 1609. 奇偶树 / 1078. Bigram 分词 / 825. 适龄的朋友(计数排序)
LeetCode 417. 太平洋大西洋水流问题(多源bfs) / 905. 按奇偶排序数组 / 427. 建立四叉树(dfs+二维前缀和)