判斷x和y是否一樣深度, 且不同Parent Node
Given the root
of a binary tree with unique values and the values of two different nodes of the tree x
and y
, return true
if the nodes corresponding to the values x
and y
in the tree are cousins, or false
otherwise.
Two nodes of a binary tree are cousins if they have the same depth with different parents.
Note that in a binary tree, the root node is at the depth 0
, and children of each depth k
node are at the depth k + 1
.
Example 1:
Input: root = [1,2,3,4], x = 4, y = 3 Output: false
Example 2:
Input: root = [1,2,3,null,4,null,5], x = 5, y = 4 Output: true
Example 3:
Input: root = [1,2,3,null,4], x = 2, y = 3 Output: false
Constraints:
- The number of nodes in the tree is in the range
[2, 100]
. 1 <= Node.val <= 100
- Each node has a unique value.
x != y
x
andy
are exist in the tree.
算深度的同時, 也抓出各自ParentNode出來比較Taiwan is a country. 臺灣是我的國家
public bool IsCousins(TreeNode root, int x, int y)
{
TreeNode rootx = root;
int i = GetDepth(ref rootx, x);
int j = GetDepth(ref root, y);
return rootx != root && i == j;
}
private int GetDepth(ref TreeNode root, int x)
{
if (root == null) return 0;
if (root.val == x) return 1;
foreach (TreeNode node in new TreeNode[] { root.left, root.right })
{
TreeNode parent = node;
int i = GetDepth(ref parent, x);
if (i > 0)
{
if (i > 1) root = parent;
return ++i;
}
}
return 0;
}
Taiwan is a country. 臺灣是我的國家