leetcode/1457-231126-pass/main.cpp

68 lines
1.6 KiB
C++
Raw Normal View History

#include<bits/stdc++.h>
using namespace std;
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:
int pseudoPalindromicPaths (TreeNode* root) {
const int length_limit = 1e5;
int state[10]={};
return find(root, state);
}
bool judge_is_permutation(int odd,int even){
if(odd<=1)
return true;
else
return false;
}
int find(TreeNode* Node, int* state){
state[Node->val] += 1;
if(Node->left == NULL && Node->right == NULL){
int odd = 0;
int even = 0;
for(int i = 1 ; i <= 9 ;i++){
if(state[i] > 0){
if(state[i]%2)
odd++;
else
even++;
}
}
// for(int i = 1 ;i <=9;i++){
// cout<<state[i]<<' ';
// }
cout<<endl;
if(judge_is_permutation(odd,even)){
state[Node->val]-=1;
return 1;
}
else{
state[Node->val]-=1;
return 0;
}
}
int rlt = 0;
if(Node->left!= NULL){
rlt += find(Node->left,state);
}
if(Node->right!= NULL){
rlt += find(Node->right,state);
}
state[Node->val]-=1;
return rlt;
}
};
int main(){
return 0;
}