力扣1315. 祖父节点值为偶数的节点和
完全就是dfs遍历,在搜索和回溯的过程中保存父亲节点和祖父节点。带着不断更新,根据题目条件判断统计即可。
/*** Definition for a binary tree node.* 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 ans;void dfs(TreeNode*root,TreeNode*grandparent,TreeNode*parent){if(root==nullptr){return ;}else{if(grandparent!=nullptr){if(grandparent->val%2==0){ans+=root->val;}}dfs(root->left,parent,root);dfs(root->right,parent,root); }}int sumEvenGrandparent(TreeNode* root) {if(root==nullptr){return 0;}dfs(root,nullptr,nullptr);return ans;}
};
时间复杂度O(n)