解决方案


方法一:深度优先遍历

思路与算法

我们先进行一次深度优先遍历,获取这颗树中的所有节点的值。然后,就可以判断所有节点的值是不是都相等了。

复杂度分析

  • 时间复杂度:,其中 是给定树中节点的数量。

  • 空间复杂度:


方法二:递归

思路与算法

一颗树是单值的,当且仅当根节点的子节点所在的子树也是单值的,同时根节点的值与子节点的值相同。

我们可以使用递归实现这个判断的过程。left_correct 表示当前节点的左孩子是正确的,也就是说:左孩子所在的子树是单值的,并且当前节点的值等于左孩子的值。right_correct 对当前节点的右孩子表示同样的事情。递归处理之后,当根节点的这两种属性都为真的时候,我们就可以判定这颗二叉树是单值的。

复杂度分析

  • 时间复杂度:,其中 是给定树中节点的数量。

  • 空间复杂度:,其中 是给定树的高度。