965.单值二叉树(简单)递归

如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。

只有给定的树是单值二叉树时,才返回 true;否则返回 false

节点类:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

示例 1:

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

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

提示:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/univalued-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

分析:

  对于二叉树的题目大部分都是使用递归算法。

  1.使用递归,将所有的树的节点值添加到一个集合中,集合有自动去重功能,所以,如果最后set的长度大于1,说明有重复的值。返回false,否则返回True。

  2.使用递归,判断节点值是否和左孩子和右孩子节点值相同,如果相同,则递归调用函数,将值变为左孩子和右孩子的与,只要有一个非根节点不和左孩子或右孩子相同,则返回false。

代码实现:

class Solution:
    def isUnivalTree(self, root):
        if root == None:
            return True
        if root.left == None and root.right == None:
            return True
        if root.left != None and root.left.val != root.val:
            return False
        if root.right !=None and root.right.val != root.val:
            return False
        return self.isUnivalTree(root.left) and self.isUnivalTree(root.right)

总结。

  在递归过程中,巧用最后一个节点,将所有结果都如同最后一个几点一样计算,分析情况。

  递归的几个组成:

    1.终止条件。

      一般写在循环体的前面。

    2.返回值,

      一般需要具体的值。

    3.返回本函数。

      将一个值作为函数的参数,返回函数的值。

原文地址:https://www.cnblogs.com/LZXlzmmddtm/p/11461582.html