祖父节点值为偶数的结点值之和

LeetCode-1315

  • 这题稍微难度有点大,但是仔细思考还是可以找到思路的。
  • 因为只需要找到祖父节点这最上两层,所以可以带一个参数记录一下祖父节点是否是偶数,以及父节点是否是偶数。
  • 求解的时候还需要注意本身结点是否是偶数,这个时候再改变参数的值。
/**
* 给你一棵二叉树,请你返回满足以下条件的所有节点的值之和:
* 该节点的祖父节点的值为偶数。(一个节点的祖父节点是指该节点的父节点的父节点。)
* 如果不存在祖父节点值为偶数的节点,那么返回 0 。
**/
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<cstdio>
#include<queue>
#include<vector>
using namespace std;
// Definition for a binary tree node.
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
/**
6
/ \
7 8
/ \ / \
2 7 1 3
/ / \ \
9 1 4 5
**/
class Solution {
private:
int sum=0;//树的最大深度的结点值的和。
public:
void DFS(TreeNode* node,int par,int fa){
//cout<<par<<" "<<fa<<endl;
if((node->val)%2==0){
if(par==0){
sum+=node->val;
}
if(node->left)
DFS(node->left,fa-1,1);
if(node->right)
DFS(node->right,fa-1,1);
}else{
if(par==0){
sum+=node->val;
}
if(node->left)
DFS(node->left,fa-1,-1);
if(node->right)
DFS(node->right,fa-1,-1);
}
}
int sumEvenGrandparent(TreeNode* root) {
if(root){
DFS(root,-1,-1);
}
return sum;
}
};
int main(){
TreeNode* t1=new TreeNode(6);
TreeNode* t2=new TreeNode(7);
TreeNode* t3=new TreeNode(8);
TreeNode* t4=new TreeNode(2);
TreeNode* t5=new TreeNode(7);
TreeNode* t6=new TreeNode(1);
TreeNode* t7=new TreeNode(3);
TreeNode* t8=new TreeNode(9);
TreeNode* t9=new TreeNode(1);
TreeNode* t10=new TreeNode(4);
TreeNode* t11=new TreeNode(5);
t4->left=t8;
t5->left=t9;t5->right=t10;
t7->left=t11;
t2->left=t4;t2->right=t5;
t3->left=t6;t3->right=t7;
t1->left=t2;t1->right=t3;
Solution solution;
cout<<solution.sumEvenGrandparent(t1)<<endl;
system("pause");
return 0;
}

最新文章

  1. [转]SOCKET通信中TCP、UDP数据包大小的确定
  2. 【Android开发学习笔记】【第十课】运动事件 之——触摸屏
  3. NSNumber 、 NSValue 、 日期处理 、 集合类 、 NSArray(一)
  4. &lt;Chapter 2&gt;2-2-1.用户偏好模式(The User Preferences Pattern)
  5. http 500错误怎么解决方法
  6. oracle11g导出表时会发现少表,空表导不出解决方案。
  7. .NET Core实战项目之CMS 第六章 入门篇-Vue的快速入门及其使用
  8. 跨域学习笔记3--web.config设置之system.webServer 详细介绍,为网站设置默认文档
  9. Debian Security Advisory(Debian安全报告) DSA-4410-1 openjdk-8 security update
  10. echarts.init 使用jq获取初始化对象
  11. PHP面试题学习
  12. day3_列表
  13. fengsuo
  14. 【斜优DP】bzoj4518-Sdoi2016征途
  15. Border属性的各种变化
  16. leetcode914
  17. Eclipse的工程名有红色的感叹号,工程里面没有显示编译错误
  18. 文件上传fileupload文件接收
  19. Oracle AWR,SQL_TRACE,10046,DBMS_PROFILER 等使用
  20. div的浮动(float)

热门文章

  1. python爬取酷我音乐
  2. AtCoder Beginner Contest 184 E - Third Avenue (BFS)
  3. SPF POJ - 1523 割点+并查集
  4. Java基础(第二期)
  5. CF1466-C. Canine poetry
  6. MySQL——时间、字符串、时间戳相互转换
  7. Linux-源码安装及FPM打包
  8. eclispe中解决OOM问题
  9. Community Cloud零基础学习(五)Topic(主题)管理
  10. 24 WAYS to impress your friends