zoukankan      html  css  js  c++  java
  • 树(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]


  • 相关阅读:
    C# Server.Transfer传值方式
    asp.net验证码生成
    pop协议指令
    Url Rewriting后的问题
    c# 一个通过oledb读取excel,csv的类
    jquery选择器全解
    覆盖与重载(override/overload) [C#]
    ASP.NET内置对象
    web开发敏捷之道应用rails进行敏捷web开发【读书笔记2】
    win7自动壁纸切换小工具AutoDesk一:初始化托盘
  • 原文地址:https://www.cnblogs.com/Lee-yl/p/9138280.html
Copyright © 2011-2022 走看看