如何检查 java 中二叉树中的两个节点是否是表亲?

How to check if two nodes are cousins in binary tree in java?

在二叉树中,根节点在深度0,每个深度k节点的子节点在深度k+1。

二叉树的两个节点如果具有相同的深度但具有不同的父节点,则它们是表亲。

我们得到了具有唯一值的二叉树的根,以及树中两个不同节点的值 x 和 y。

Return 当且仅当对应于值 x 和 y 的节点是表亲时才为真。

示例 1: click for example

输入:root = [1,2,3,4], x = 4, y = 3 输出:错误 示例 2:

输入:root = [1,2,3,null,4,null,5], x = 5, y = 4 输出:真

->使用顺序 ->分别获取左右子树的深度

public boolean isCousins(TreeNode root, int x, int y) {
    int[] res = new int[5];
    inorder(root.left,x,y,0,root,res);
    inorder(root.right,x,y,0,root,res);
    if(res[1] != res[3] && res[2] == res[4])
        return true;
    return false;
}

public void inorder(TreeNode node, int x, int y,int dep, TreeNode parent, int[] res){
    if(node == null)
        return;
    dep = dep + 1;
    inorder(node.left, x, y, dep, node, res);

    if(node.val == x){
        res[1] = parent.val;
        res[2] = dep;
        return;
    }
    else if(node.val == y){
        res[3] = parent.val;
        res[4] = dep;
        return;
    }

    inorder(node.right, x ,y, dep, node, res);
}

}