• 树(6)-----DFS


    1、二叉树的反向层次遍历

    def levelOrderBottom1(self, root):
        res = []
        self.dfs(root, 0, res)
        return res
    
    def dfs(self, root, level, res):
        if root:
            if len(res) < level + 1:
                res.insert(0, [])
            res[-(level+1)].append(root.val)
            self.dfs(root.left, level+1, res)
            self.dfs(root.right, level+1, res)

    2、最长同值路径

    给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。

    注意:两个节点之间的路径长度由它们之间的边数表示。

    示例 1:

    输入:

                  5
                 / 
                4   5
               /    
              1   1   5
    

    输出:

    2
    
    class Solution_recursive:
        def longestUnivaluePath(self, root):
            """
            :type root: TreeNode
            :rtype: int
            """
            self.count = 0
            self.dfs(root)
            return self.count
    
        def dfs(self, root):
            if root is None:
                return 0
            left = self.dfs(root.left)
            right = self.dfs(root.right)
    
            left = left + 1 if root.left and root.left.val == root.val else 0
            right = right + 1 if root.right and root.right.val == root.val else 0
    
            self.count = max(self.count, left + right)
            return max(left, right)

     3、找到出现最多值的节点。【递归+Counter字典】

    from collections import Counter
    class Solution(object):
        def findMode(self, root):
            """
            :type root: TreeNode
            :rtype: List[int]
            """
            if not root:
                return []
            countDic=Counter()
            def helper(root):           
                if root:
                    countDic[root.val]+=1
                    helper(root.left)
                    helper(root.right)
                    
            helper(root)
            maxMode=max(countDic.values())
            return [k for k,v in countDic.items() if v==maxMode]


  • 相关阅读:
    洛谷 1012 拼数(NOIp1998提高组)
    洛谷 1540 机器翻译
    洛谷 1328 生活大爆炸版石头剪刀布(NOIp2014提高组)
    洛谷 2820 局域网
    洛谷 1359 租用游艇
    洛谷 1195 口袋的天空
    洛谷 1316 丢瓶盖
    洛谷 1258 小车问题
    洛谷 1017 进制转换 (NOIp2000提高组T1)
    GYM
  • 原文地址:https://www.cnblogs.com/Lee-yl/p/9138280.html
Copyright © 2020-2023  润新知