zoukankan      html  css  js  c++  java
  • 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.返回本函数。

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

  • 相关阅读:
    【转自百度贴吧】把古诗最后三个字改为“日了狗”,看谁最有才!
    计划!
    [BZOJ2424][HAOI2010]订货
    [BZOJ1026][SCOI2009]windy数
    【作文】高考之外
    [AYYZVijos1761]运输问题
    [BZOJ1047][HAOI2007]理想的正方形
    [NOIP2015]代码
    新的独立博客
    不忘初心,方得始终——NOIP2016前的感悟
  • 原文地址:https://www.cnblogs.com/LZXlzmmddtm/p/11461582.html
Copyright © 2011-2022 走看看