二叉树内两个节点的最长距离

Posted 樱圃

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树内两个节点的最长距离相关的知识,希望对你有一定的参考价值。

二叉树中两个节点的最长距离可能有三种情况:
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;
    }

 

以上是关于二叉树内两个节点的最长距离的主要内容,如果未能解决你的问题,请参考以下文章

二叉树

二叉树中节点的最大的距离

数据结构-求二叉树中节点的最大距离

java如何求二叉树中任意两个节点的最大距离

树形dp (二叉树中的最大路径最长距离)

11.求二叉树中节点的最大距离