993:二叉树的堂兄弟节点

This commit is contained in:
huangge1199 2021-05-17 13:06:23 +08:00
parent e94ff0a733
commit 2f8a03ef4b

View File

@ -75,11 +75,11 @@ public class CousinsInBinaryTree {
*/ */
class Solution { class Solution {
public boolean isCousins(TreeNode root, int x, int y) { public boolean isCousins(TreeNode root, int x, int y) {
int[][] paraent = getParent(root, x, y, new int[2][2], 1); int[][] paraent = getParent(root, x, y, new int[2][2], 1,-1);
return paraent[0][0] != paraent[1][0] && paraent[0][1] == paraent[1][1]; return paraent[0][0] != paraent[1][0] && paraent[0][1] == paraent[1][1];
} }
private int[][] getParent(TreeNode root, int x, int y, int[][] paraent, int deep) { private int[][] getParent(TreeNode root, int x, int y, int[][] paraent, int deep,int before) {
if (paraent[1][1] > 0) { if (paraent[1][1] > 0) {
return paraent; return paraent;
} }
@ -87,21 +87,21 @@ public class CousinsInBinaryTree {
x = root.val == x ? 0 : x; x = root.val == x ? 0 : x;
y = root.val == y ? 0 : y; y = root.val == y ? 0 : y;
if (paraent[0][1] > 0) { if (paraent[0][1] > 0) {
paraent[1][0] = root.val; paraent[1][0] = before;
paraent[1][1] = deep; paraent[1][1] = deep;
} else { } else {
paraent[0][0] = root.val; paraent[0][0] = before;
paraent[0][1] = deep; paraent[0][1] = deep;
} }
} }
if (root.left != null) { if (root.left != null) {
paraent = getParent(root.left, x, y, paraent, deep + 1); paraent = getParent(root.left, x, y, paraent, deep + 1,root.val);
} }
if (paraent[1][1] > 0) { if (paraent[1][1] > 0) {
return paraent; return paraent;
} }
if (root.right != null) { if (root.right != null) {
paraent = getParent(root.right, x, y, paraent, deep + 1); paraent = getParent(root.right, x, y, paraent, deep + 1,root.val);
} }
return paraent; return paraent;
} }