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]


  • 相关阅读:
    chrome 插件备份
    github下载单个文件
    idea插件备份
    外卖类应用的竞争与趋势
    使用终端和Java API对hbase进行增删改查操作
    分布式文件系统的布局、文件查找
    Java上机实验报告(4)
    Java上机实验报告(3)
    Java上机实验报告(2)
    Java上机实验报告(1)
  • 原文地址:https://www.cnblogs.com/Lee-yl/p/9138280.html
Copyright © 2011-2022 走看看