• Leetcode刷题10.22——二叉树的(最大)深度 & 二叉树的直径


    leetcode 104 二叉树的(最大)深度

      此题有很多种做法,这里主要记录递归的方法。二叉树的最大深度即是每个节点左右节点中较大的深度加1,按这种方法递归直到根节点就能找出最大深度,代码非常直观简单。

      遇到递归日常思考:

    1. 输入是什么:要求最大深度的根节点
    2. 输出是什么:当前根节点下的最大深度
    3. 该递归函数的功能是什么:求出当前根节点的最大深度
    class Solution:
        def maxDepth(self, root: TreeNode) -> int:
            if not root:
                return 0
            else:
                return max(self.maxDepth(root.left), self.maxDepth(root.right)) + 1

    leetcode 543 二叉树的直径

      此题看起来跟上一题非常相似,仔细想一下实际上就是多了一个把左右节点最大深度相加的步骤。另外,可以在计算的时候仍然按照节点的深度来算,最后的结果减一即可,这样会简化很多思考的步骤,也可以直接用上一题的思路来做。本题目用到了全局变量,巧妙的地方在于该题中的递归函数不需要做什么本质上的改变,只需要多两个分别记录左右节点深度的变量,并加入全局变量的最大值比较即可。

    class Solution:
        def diameterOfBinaryTree(self, root: TreeNode) -> int:
            self.Max = 1    # 需要设置一个全局变量跟自己比较
            def maxDepth(r):
                if not r:
                    return 0
                else:
                    L = maxDepth(r.left)
                    R = maxDepth(r.right)
                    self.Max = max(L+R+1,self.Max)  
                    return max(L, R)+1
            maxDepth(root)
            return self.Max-1
  • 相关阅读:
    HBase with MapReduce (MultiTable Read)
    HBase with MapReduce (SummaryToFile)
    HBase with MapReduce (Summary)
    HBase with MapReduce (Read and Write)
    HBase with MapReduce (Only Read)
    Hbase中的BloomFilter(布隆过滤器)
    HBase的快照技术
    How To Use Hbase Bulk Loading
    Cloudera-Manager修改集群的IP
    Java中的HashSet和TreeSet
  • 原文地址:https://www.cnblogs.com/nekoneko-15/p/13871394.html
Copyright © 2020-2023  润新知