993.二叉树的堂兄弟节点
-
链接
leetcode
-
solution:
这好像跟我印象中的堂兄弟不是一回事,这里竟然是同一深度的父节点不同的就是堂兄弟emmm ? 不是一个爷爷的咋办,祖宗一样也算吗???
解法emmm
我觉得我写的挺蠢的,先找着一个然后记录一下深度,再找另一个,需要两个bool来记录 one记录第一个找到没,res用于返回结果,主题还是DFS,时间就看数据咯
-
code
class Solution {
public:
int a,b;//a记录第一个的深度,b记录他爹的值
bool one=false;//第一个找没找到
bool res=false;//返回的结果
bool isCousins(TreeNode* root, int x, int y) {
if(root->val==x||root->val==y) return false;
DFS(root,0,-1,x,y);
return res;
}
void DFS(TreeNode* root,int depth,int father,int x,int y){
if(one==false&&(root->val==x||root->val==y)){
one=true;
a=depth;
b=father;
}
if(one==true&&(root->val==x||root->val==y)){
if(depth==a&&father!=b) res=true;
}
if(root->left) DFS(root->left,depth+1,root->val,x,y);
if(root->right) DFS(root->right,depth+1,root->val,x,y);
}
};