
思路是BFS层序遍历,然后在遍历过程不断判断条件
该写法比较简洁优雅。
class Solution {
public:
bool isEvenOddTree(TreeNode* root) {
queue<TreeNode*> qu;
qu.push(root);
int level = 0;
while (!qu.empty()) {
int size = qu.size();
int prev = level % 2 == 0 ? INT_MIN : INT_MAX;
for (int i = 0; i < size; i++) {
TreeNode * node = qu.front();
qu.pop();
int value = node->val;
if (level % 2 == value % 2) {
return false;
}
if ((level % 2 == 0 && value <= prev) || (level % 2 == 1 && value >= prev)) {
return false;
}
prev = value;
if (node->left != nullptr) {
qu.push(node->left);
}
if (node->right != nullptr) {
qu.push(node->right);
}
}
level++;
}
return true;
}
};
&spm=1001.2101.3001.11974&articleId=122157241&d=1&t=3&u=1a97dc509ab44da5b3a87aed8c95669e)
517


&spm=1001.2101.3001.11976&articleId=122157241&d=1&t=3&u=05ce6922006049f2aae913f99518d7ac)

被折叠的 条评论
为什么被折叠?



