• 求二叉树中距离最大的两个节点


    给定一个二叉树,求出该二叉树中任意两个节点的最远距离(两个节点的距离是指两个节点之间边的条数,可能不过根节点。)

    如下图所示的二叉树的最远距离是3

              1
             / 
            2   3
           /      
          4   5    
    解题思路:虽然最大距离的路径可能不过当前根节点,但是总会过一个子树的根节点的。所以我们可以这么做:
    前序遍历二叉树,已当前节点为根节点,分别求出其左右子树的最大深度,相加之后存在一个数组中
    接着继续遍历左右子树,分别执行上述操作。遍历完成之后,返回数组中最大的值即可。
    代码如下:
    class TreeNode:
        def __init__(self,x,left=None,right=None):
            self.value=x
            self.left=left
            self.right=right
    
    
    class Solution:
        def __init__(self):
            self.target=[]
    
    
        def MaxDistance(self,root):
            if not root:
                return 0
            self.target.append(self.MaxDepth(root.left)+self.MaxDepth(root.right))
            self.MaxDistance(root.left)
            self.MaxDistance(root.right)
            return max(self.target)
            # return self.target
    
    
    
        def MaxDepth(self,root):
            if not root:
                return 0
            left=self.MaxDepth(root.left)
            right=self.MaxDepth(root.right)
            return 1+max(left,right)
    
    
    node4=TreeNode(4)
    node5=TreeNode(5)
    node3=TreeNode(3)
    node2=TreeNode(2,node4,node5)
    node1=TreeNode(1,node2,node3)
    s=Solution()
    print(s.MaxDistance(node1))
  • 相关阅读:
    js 图片压缩
    C#.NET中对称和非对称加密、解密方法汇总--亲测可用
    最精美详尽的 HTTPS 原理图
    swagger ui
    python爬取百度谷歌搜索结果
    Gitlab 11.0.3 迁移简明笔记
    ELK stack 7.6.x + kafka构建日志平台
    Nginx 内存占用高排查
    运维机器人 hubot 集成 jenkins
    运维机器人hubot,解放运维的神器
  • 原文地址:https://www.cnblogs.com/tsdblogs/p/9977364.html
Copyright © 2020-2023  润新知