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.返回本函数。

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

  • 相关阅读:
    SNMP概述–运维必知的协议基础
    关于多线程情况下Net-SNMP v3 版本导致进程假死情况的跟踪与分析
    关于snmp octet string和普通string问题
    SVN状态说明
    SNMP mib文件说明
    Linux之 proc文件系统
    django .all .values .value_list 数据库获取数据
    Django form验证
    JSONP实现
    iframe和form表单实现ajax请求上传数据
  • 原文地址:https://www.cnblogs.com/LZXlzmmddtm/p/11461582.html
Copyright © 2011-2022 走看看