当前位置:网站首页>二叉树的堂兄弟节点-c语言
二叉树的堂兄弟节点-c语言
2022-04-21 14:41:00 【Mr Gao】
二叉树的堂兄弟节点-c语言
在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。
如果二叉树的两个节点深度相同,但 父节点不同 ,则它们是一对堂兄弟节点。
我们给出了具有唯一值的二叉树的根节点 root ,以及树中两个不同节点的值 x 和 y 。
只有与值 x 和 y 对应的节点是堂兄弟节点时,才返回 true 。否则,返回 false。


对于这题我使用的是递归,先轮番找到节点的深度,之后进行比较,但是比较的同时,我们要判断一下是否是兄弟节点,即可。
算法实现图下:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */
int f(struct TreeNode* root, int value, int h,int value2){
int a=-1, b=-1;
if(root){
if(root->val==value){
return h;
}
else {
if(root->left&&root->right){
if(root->left->val==value&&root->right->val==value2){
return -2;
}
}
if(root->left){
a=f(root->left,value,h+1,value2);
}
if(root->right){
b=f(root->right,value,h+1,value2);
}
}
}
if(a==-2||b==-2){
return -1;
}
if(a!=-1)return a;
else if(b!=-1)return b;
else return -1;
}
bool isCousins(struct TreeNode* root, int x, int y){
int hx,hy;
// struct TreeNode *hxnode=NULL,*hynode=NULL;
hx=f(root,x,1,y);
hy=f(root,y,1,x);
printf("%d %d",hx,hy);
if(hx==hy) return true;
else return false;
}
这个算法取得了还不错的结果。

版权声明
本文为[Mr Gao]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_43327597/article/details/124320466
边栏推荐
猜你喜欢

专题测试04·多元函数微分学【李艳芳全程班】

脚本操作ES

如何在代码层面提供CPU分支预测效率

Storage system and memory

SQL server variable assignment and batch processing

LNK2001 - unresolved external symbol in PCL test program

你会“卖”SQL?

DBeaver无法连接数据库,如何解决?

论文复现——Libra R-CNN: Towards Balanced Learning for Object Detection

Legendary server setup tutorial, legendary GM permission command setting tutorial
随机推荐
我们还能依赖Play to Earn经济获利多久?
虫子 PWM
存储系统及存储器
如何在 OpenShift 中运行 Collabora Office
代码重构之内联函数
代码重构之内联临时变量
游戏+NFT,脱虚向实外的另一可行场景
SQL Server 批处理变量定义和赋值
Object类
代码重构之分解临时变量
Insect double linked list
专题测试04·多元函数微分学【李艳芳全程班】
脚本操作ES
Insect 1602
Insect 12864
异步操作之后让await后续的代码能够继续执行
Kubernetes 疑难问题排查 - 10s 延迟
浅谈NFT的注意力经济
传奇服务器架设教程,传奇GM权限命令设置教程
DeFi 需要什么才能成为主流?