「每日LeetCode」2021年1月11日

本文最后更新于:2023年3月19日 晚上

Lt965. 单值二叉树

965. 单值二叉树

如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。
只有给定的树是单值二叉树时,才返回 true;否则返回 false
 示例 1:

1
2
输入:[1,1,1,1,1,null,1]
输出:true

示例 2:

1
2
输入:[2,2,2,5,2]
输出:false

提示:

  1. 给定树的节点数范围是 [1, 100]
  2. 每个节点的值都是整数,范围为 [0, 99]

思路

递归即可,如果为叶子节点返回 true,如果只有左或右孩子,判断当前节点和左、右孩子节点值是否相等,再递归判断左、右孩子。如果左右孩子皆有,判断当前欠点和左及右孩子节点值是否相等,再递归判断左和右孩子。

解答

image.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @return {boolean}
*/
var isUnivalTree = function (root) {
if (!root || (!root.left && !root.right)) return true;
if (!root.left)
return root.val === root.right.val && isUnivalTree(root.right);
else if (!root.right)
return root.val === root.left.val && isUnivalTree(root.left);
else
return (
root.val === root.left.val &&
root.val === root.right.val &&
isUnivalTree(root.left) &&
isUnivalTree(root.right)
);
};