商务网站制作语言基础,冠县 网站建设,潍坊 网站企划,杭州市上城区建设局网站在二叉树中#xff0c;根节点位于深度 0 处#xff0c;每个深度为 k 的节点的子节点位于深度 k1 处。
如果二叉树的两个节点深度相同#xff0c;但 父节点不同 #xff0c;则它们是一对堂兄弟节点。
我们给出了具有唯一值的二叉树的根节点 root #xff0c;以及树中两个…在二叉树中根节点位于深度 0 处每个深度为 k 的节点的子节点位于深度 k1 处。
如果二叉树的两个节点深度相同但 父节点不同 则它们是一对堂兄弟节点。
我们给出了具有唯一值的二叉树的根节点 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
提示
二叉树的节点数介于 2 到 100 之间。 每个节点的值都是唯一的、范围为 1 到 100 的整数。 public boolean isCousins(TreeNode root, int x, int y) {if (x y || x root.val || y root.val) return false;MapInteger, Integer map1 new HashMap();MapInteger, TreeNode map2 new HashMap();QueueTreeNode queue new LinkedList();queue.add(root);int level 0;while (!queue.isEmpty()) {int size queue.size();level;for (int i 0; i size; i) {TreeNode cur queue.poll();if (cur.left ! null) {map1.put(cur.left.val, level);map2.put(cur.left.val, cur);queue.add(cur.left);}if (cur.right ! null) {map1.put(cur.right.val, level);map2.put(cur.right.val, cur);queue.add(cur.right);}}}return map1.get(x).equals(map1.get(y)) !map2.get(x).equals(map2.get(y));}