【js】Leetcode每日一题-二叉树的堂兄弟节点

【js】Leetcode每日一题-二叉树的堂兄弟节点 【题目描述】

二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。

如果二叉树的两个节点深度相同,但 父节点不同 ,则它们是一对堂兄弟节点。

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

只有与值 x 和 y 对应的节点是堂兄弟节点时,才返回 true 。否则,返回 false。

示例1:

输入:root = [1,2,3,4], x = 4, y = 3 输出:false

示例2:

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

示例3:

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

提示:

1.二叉树的节点数介于 2 到 100 之间。 2.每个节点的值都是唯一的、范围为 1 到 100 的整数。 【分析】

二叉树dfs | bfs遍历

代码: /** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val===undefined ? 0 : val) * this.left = (left===undefined ? null : left) * this.right = (right===undefined ? null : right) * } */ /** * @param {TreeNode} root * @param {number} x * @param {number} y * @return {boolean} */ var isCousins = function(root, x, y) { let dx = 0, px = null, fx = false; let dy = 0, py = null, fy = false; const dfs = function(root, depth, parent){ if(!root) return; if(root.val == x){ [dx, px, fx] = [depth, parent, true] }else if(root.val == y){ [dy, py, fy] = [depth, parent, true] } if(fx && fy) return; dfs(root.left, depth+1, root); if(fx && fy) return; dfs(root.right, depth+1, root); } dfs(root, 0, null); return dx == dy && px != py; };

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyjdjp.html