1457 pass. a very simple search problem
This commit is contained in:
parent
e1e368ca7a
commit
187ce6f47a
68
1457-231126-pass/main.cpp
Normal file
68
1457-231126-pass/main.cpp
Normal file
@ -0,0 +1,68 @@
|
||||
#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;
|
||||
}
|
Loading…
Reference in New Issue
Block a user