美文网首页
每日Leetcode—算法(11)

每日Leetcode—算法(11)

作者: Chuck_Wu | 来源:发表于2019-05-12 21:32 被阅读0次

110.平衡二叉树

算法:

def isBalanced(self, root: TreeNode) -> bool:
    def depth(node):    #直接创建一个树深函数
        if not node:    #如果空树,返回0
            return 0
        left = depth(node.left)     #计算左子树的树深
        right = depth(node.right)   #计算右子树的树深
        if left == -1 or right == -1 or abs(left-right)>1:     #如果满足其中一个条件,返回-1
            return -1
        return 1 + max(left,right)    #返回最大树深+1
    return depth(root) != -1     #判断是否函数返回值是否为-1

111.二叉树的最小树深

算法:

def minDepth(self, root: TreeNode) -> int:
    if not root:   #树为空,返回0
        return 0
    if not root.left and not root.right:   #考虑四种情况,一是没有子节点
        return 1
    elif not root.left:            #二是没有左孩子
        return 1 + self.minDepth(root.right)      #所以将右孩子进行递归
    elif not root.right:          #三是没有右孩子
        return 1 + self.minDepth(root.left)        #所以将左孩子进行递归
    else:
        return 1 + min([self.minDepth(root.left), self.minDepth(root.right)])    #四是有两个孩子节点,递归后返回树深,取较小的一个

112.路径总和

算法:

def hasPathSum(self, root: TreeNode, sum: int) -> bool:
    if not root:     #root为空的情况
        return False
    if root.val == sum and not root.left and not root.right      #只有根节点的情况
        return True
    return self.hasPathSum(root.left, sum-root.val) or self.hasPathSum(root.right, sum-root.val)             #利用节点与sum的差值进行递归

相关文章

  • Swap Nodes in Pairs

    标签: C++ 算法 LeetCode 链表 每日算法——leetcode系列 问题 Swap Nodes in ...

  • Combination Sum II

    标签: C++ 算法 LeetCode DFS 每日算法——leetcode系列 问题 Combinatio...

  • Divide Two Integers

    标签: C++ 算法 LeetCode 每日算法——leetcode系列 问题 Divide Two Integ...

  • First Missing Positive

    标签: C++ 算法 LeetCode 数组 每日算法——leetcode系列 问题 First Missing...

  • Valid Sudoku

    Valid Sudoku 标签: C++ 算法 LeetCode 每日算法——leetcode系列 问题 Val...

  • Next Permutation

    标签: C++ 算法 LeetCode 数组 每日算法——leetcode系列 问题 Next Permuta...

  • Trapping Rain Water

    标签: C++ 算法 LeetCode 数组 每日算法——leetcode系列 问题 Trapping Rain...

  • Combination Sum

    标签: C++ 算法 LeetCode 数组 DFS 每日算法——leetcode系列 问题 Combinat...

  • Remove Nth Node From End of List

    标签: C++ 算法 LeetCode 链表 每日算法——leetcode系列 问题 Remove Nth Nod...

  • Merge k Sorted Lists

    标签: C++ 算法 LeetCode 链表 每日算法——leetcode系列 问题 Merge Two Sort...

网友评论

      本文标题:每日Leetcode—算法(11)

      本文链接:https://www.haomeiwen.com/subject/wqecaqtx.html