zoukankan      html  css  js  c++  java
  • 二叉树内两个节点的最长距离

    二叉树中两个节点的最长距离可能有三种情况:
    1.左子树的最大深度+右子树的最大深度为二叉树的最长距离
    2.左子树中的最长距离即为二叉树的最长距离
    3.右子树种的最长距离即为二叉树的最长距离
    因此,递归求解即可

    private static class Result{  
        int maxDistance;  
        int maxDepth;  
        public Result() {  
        }  
      
        public Result(int maxDistance, int maxDepth) {  
            this.maxDistance = maxDistance;  
            this.maxDepth = maxDepth;  
        }  
    }  
        int getMaxDistance(TreeNode root){
          return getMaxDistanceResult(root).maxDistance;
        }
        Result getMaxDistanceResult(TreeNode root){
            if(root == null){
                Result empty = new Result(0,-1);
                return empty;
            }
            Result lmd = getMaxDistanceResult(root.left);
            Result rmd = getMaxDistanceResult(root.right);
            Result result = new Result();
            result.maxDepth = Math.max(lmd.maxDepth,rmd.maxDepth) + 1;
            result.maxDistance = Math.max(lmd.maxDepth + rmd.maxDepth,Math.max(lmd.maxDistance,rmd.maxDistance));
            return result;
        }
  • 相关阅读:
    记长连接压测总结
    PHP装扩展
    LMbench安装&使用
    Scala学习笔记-2-(if、while、for、try、match)
    Gatling学习笔记-Scenario(场景)
    Java之路---Day05
    Java之路---Day04
    Java之路---Day03
    Java之路---Day02
    Java之路---Day01
  • 原文地址:https://www.cnblogs.com/yingpu/p/9287214.html
Copyright © 2011-2022 走看看