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+二维前缀和)

poj1753 bfs+奇偶性减枝//状压搜索

Leetcode5760. 构成交替字符串需要的最小交换次数

BFS问题-LeetCode 55455297127433434(BFS)