LeetCode-祖父节点值为偶数的结点值之和
祖父节点值为偶数的结点值之和
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;
}
LeetCode-祖父节点值为偶数的结点值之和的更多相关文章
- [LeetCode] Find Largest Value in Each Tree Row 找树每行最大的结点值
You need to find the largest value in each row of a binary tree. Example: Input: 1 / \ 3 2 / \ \ 5 3 ...
- 返回结点值为e的二叉树指针
题意为,如果二叉树某结点的值为e(假定是整型二叉树),返回这个结点的指针.初看这道题,联想到二叉树可以很简单的遍历,直接返回这个指针不就行了吗?如下图所示,假如要返回值为3的结点指针: 设计好了一个函 ...
- 链表习题(1)-设计一个递归算法,删除不带头结点的单链表L中所有值为x的结点
/*设计一个递归算法,删除不带头结点的单链表L中所有值为x的结点*/ /* 算法思想:设f(L,x)的功能是删除以L为首结点指针的单链表中所有值等于x的结点, 则显然有f(L->next,x)的 ...
- C语言:将ss所指字符串中所有下标为奇数位上的字母转换成大写,若不是字母,则不转换。-删除指针p所指字符串中的所有空白字符(包括制表符,回车符,换行符)-在带头结点的单向链表中,查找数据域中值为ch的结点,找到后通过函数值返回该结点在链表中所处的顺序号,
//将ss所指字符串中所有下标为奇数位上的字母转换成大写,若不是字母,则不转换. #include <stdio.h> #include <string.h> void fun ...
- C语言:将s所指字符串中下标为偶数同时ASCII值为奇数的字符删去,-将a所指字符串中的字符和b所指字符串中的字符的顺序交叉,-将形参s所指字符串中的所有数字字符顺序前移,
//函数fun功能:将s所指字符串中下标为偶数同时ASCII值为奇数的字符删去,s所指串中剩余的字符形成的新串放在t所指的数组中. #include <stdio.h> #include ...
- 【python】Leetcode每日一题-逆波兰表达式求值
[python]Leetcode每日一题-逆波兰表达式求值 [题目描述] 根据 逆波兰表示法,求表达式的值. 有效的算符包括 +.-.*./ .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说 ...
- jquery data方法取值与js attr取值的区别
<a data-v="3"></a> jquery data方法的运行机制: 第一次查找dom,使用attributes获取到dom节点值,并将其值存到缓存 ...
- C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解
前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧.之前分享过一篇 C#进阶系列——WebApi接口传参不再困惑:传参详解 ...
- excel转化为table(去掉所有列值都为空的值一行,即返回有效值的DataTable)
/// <summary> /// 去掉所有列值都为空的值一行,即返回有效值的DataTable /// </summary> /// <param name=" ...
随机推荐
- 2019HDU多校 Round6
Solved:2 02 Nonsense Time (LIS) 题意:给定一个全排列 最开始为空的 每秒中一个位置上的数出现 求每秒的LIS 题解:题解说 考虑时光倒流 倒着消掉 因为数据随机 所以期 ...
- zjnu1749 PAROVI (数位dp)
Description The distance between two integers is defined as the sum of the absolute result of subtra ...
- Codeforces Round #681 (Div. 2, based on VK Cup 2019-2020 - Final) C. The Delivery Dilemma (贪心,结构体排序)
题意:你要买\(n\)份午饭,你可以选择自己去买,或者叫外卖,每份午饭\(i\)自己去买需要消耗时间\(b_i\),叫外卖需要\(a_i\),外卖可以同时送,自己只能买完一份后回家再去买下一份,问最少 ...
- jdk8下的接口和抽象类
接口 在java8中,接口可以定义变量和方法,其中变量必须为 public && static && final: 方法必须为public && (ab ...
- Kafka官方文档V2.7
1.开始 1.1 简介 什么是事件流? 事件流相当于人体的中枢神经系统的数字化.它是 "永远在线 "世界的技术基础,在这个世界里,业务越来越多地被软件定义和自动化,软件的用户更是软 ...
- OpenStack Train版-2.安装keystone身份认证服务
安装 keystone 认证 mysql -uroot create database keystone; grant all privileges on keystone.* to 'keyston ...
- 抓包 127.0.0.1 (loopback) 使用 tcpdump+wireshark
直接使用 wireshark无法抓取 127.0.0.1环回的数据包,一种解决方法是先传到路由器再返回,但这样可能造成拥塞. Linux 先使用tcpdump抓包并输出为二进制文件,然后wiresha ...
- 牛客网-Beautiful Land 【01背包 + 思维】
链接:https://www.nowcoder.com/acm/contest/119/F来源:牛客网 Now HUST got a big land whose capacity is C to p ...
- 从GitHub Jobs! 看技术发展趋势! 程序员进阶必备!
0. https://jobs.github.com/positions GitHub Jobs: 1. https://jobs.github.com/positions/38bb8dc8-b5b4 ...
- How to use JavaScript to implement precise setTimeout and setInterval
How to use JavaScript to implement precise setTimeout and setInterval 如何使用 JavaScript 实现精确的 setTimeo ...