首页 > 其他 > 详细

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

时间:2019-09-04 22:03:49      阅读:72      评论:0      收藏:0      [点我收藏+]

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

只有给定的树是单值二叉树时,才返回 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.返回本函数。

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

 

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!