993. 二叉树的堂兄弟节点 - 力扣(LeetCode) (leetcode-cn.com)
这是我见过最最最简洁的代码。。。。。。原来求深度可以这么求。。。。
class Solution {
int xf,xd,yf,yd;
public:
bool isCousins(TreeNode* root, int x, int y) {
dfs(root->left,1,x,y,root->val);
dfs(root->right,1,x,y,root->val);
return (xf!=yf)&&(xd==yd);
}
void dfs(TreeNode*root,int d,int x,int y,int vf){
if(root==nullptr) return;
if(root->val==x){
xf=vf;
xd=d;
}
else if(root->val==y){
yf=vf;
yd=d;
}
else{
dfs(root->left,d+1,x,y,root->val);
dfs(root->right,d+1,x,y,root->val);
}
}
};