diff options
Diffstat (limited to 'other/pseudo_palindrome_binary_tree.cpp')
-rw-r--r-- | other/pseudo_palindrome_binary_tree.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/other/pseudo_palindrome_binary_tree.cpp b/other/pseudo_palindrome_binary_tree.cpp new file mode 100644 index 0000000..63b2cac --- /dev/null +++ b/other/pseudo_palindrome_binary_tree.cpp @@ -0,0 +1,29 @@ +#include "leetcode.h" + +class Solution { +public: + int pseudoPalindromicPaths(TreeNode *root) { + vector<int> v(10, 0); + dfs(root, v); + return count; + } + +private: + int count = 0; + void dfs(TreeNode *root, vector<int> v) { + if (root == NULL) + return; + v[root->val]++; + if (root->left == NULL && root->right == NULL) { + int oddCount = 0; + for (auto x : v) + if (x % 2) + oddCount++; + if (oddCount <= 1) + count++; + return; + } + dfs(root->left, v); + dfs(root->right, v); + } +}; |