Skip to content

Commit 1c22850

Browse files
Question 1609 has been solved.
1 parent 1a35daa commit 1c22850

File tree

2 files changed

+96
-0
lines changed

2 files changed

+96
-0
lines changed

Q-1609 - Even Odd Tree/1609.cpp

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* struct TreeNode {
4+
* int val;
5+
* TreeNode *left;
6+
* TreeNode *right;
7+
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
8+
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
9+
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
10+
* };
11+
*/
12+
class Solution
13+
{
14+
public:
15+
void get_data(bool &result, TreeNode* node, vector<int> &array, int level){
16+
if(node==NULL){
17+
return;
18+
}
19+
if(level%2==0 && (node->val)%2==0){
20+
result=false;
21+
return;
22+
}
23+
if(level%2!=0 && (node->val)%2!=0){
24+
result=false;
25+
return;
26+
}
27+
if(level==array.size()){
28+
array.push_back(node->val);
29+
}
30+
else if(level%2==0){
31+
if(array[level]>=node->val){
32+
result=false;
33+
return;
34+
}
35+
array[level]=node->val;
36+
}
37+
else if (level %2 !=0){
38+
if(array[level]<=node->val){
39+
result=false;
40+
return;
41+
}
42+
array[level]=node->val;
43+
}
44+
get_data(result, node->left, array, level+1);
45+
get_data(result, node->right, array, level+1);
46+
}
47+
bool isEvenOddTree(TreeNode* root) {
48+
vector<int> array;
49+
bool result=true;
50+
get_data(result, root, array, 0);
51+
return result;
52+
}
53+
};

Q-1609 - Even Odd Tree/1609.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# Definition for a binary tree node.
2+
# class TreeNode:
3+
# def __init__(self, val=0, left=None, right=None):
4+
# self.val = val
5+
# self.left = left
6+
# self.right = right
7+
class Solution:
8+
def isEvenOddTree(self, root: TreeNode) -> bool:
9+
queue = []
10+
odd = lambda x: (x % 2 == 1)
11+
even = lambda x: (x % 2 == 0)
12+
levelCount = 0
13+
14+
if (root):
15+
queue = [(root)]
16+
while (queue):
17+
newQueue = []
18+
temp = None
19+
level = False
20+
if (even(levelCount)):
21+
level = True
22+
for idx, node in enumerate(queue):
23+
if (level and not odd(node.val)):
24+
return False
25+
if (not level and not even(node.val)):
26+
return False
27+
if (idx == 0):
28+
temp= float('inf')
29+
if even(levelCount):
30+
temp = float('-inf')
31+
else:
32+
if (even(levelCount) and temp >= node.val):
33+
return False
34+
elif (odd(levelCount) and temp <= node.val):
35+
return False
36+
temp = node.val
37+
if (node.left):
38+
newQueue.append(node.left)
39+
if (node.right):
40+
newQueue.append(node.right)
41+
queue = newQueue
42+
levelCount += 1
43+
return True

0 commit comments

Comments
 (0)