var findNearestRightNode = function (root, u) {
if (!root) return null;
let q = [root];
while (q.length) {
let size = q.length;
// 遍历当前层的所有节点
for (let i = 0; i < size; i++) {
let cur = q.shift();
// 如果找到目标节点
// if (cur.val === u.val) {
if (cur === u) {
// 如果是当前层的最后一个节点,返回 null
if (i === size - 1) return null;
// 否则返回下一个节点(右侧节点)
// 因为每次都 shift ,所以下一个节点自然就是 q[0]
return q[0];
}
// 将子节点加入队列
if (cur.left) q.push(cur.left);
if (cur.right) q.push(cur.right);
}
}
return null;
};