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;
        }
  • 相关阅读:
    UVA-448
    算法提高-集合选取
    算法训练Maze
    UVA-10061
    树状数组
    前缀和
    【UVA
    统计Linux下的CPU状态信息
    Android_内部文件读取
    Android打开/data/目录以及导出文件
  • 原文地址:https://www.cnblogs.com/yingpu/p/9287214.html
Copyright © 2011-2022 走看看