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;
        }
  • 相关阅读:
    C++primer习题3.13
    Indesign技巧
    《转载》虚函数在对象中的内存布局
    C++new失败后如何处理
    sizeof的用法
    转载 C++中虚继承防止二义性
    字符串反转
    回文写法
    C++术语
    QT+VS2008
  • 原文地址:https://www.cnblogs.com/yingpu/p/9287214.html
Copyright © 2011-2022 走看看