美文网首页
二叉树内两个节点的最长距离

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

作者: 潘志杰_34fd | 来源:发表于2019-07-08 17:18 被阅读0次

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

    二叉树中两个节点的最长距离可能有三种情况:

    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;

        }

    相关文章

      网友评论

          本文标题:二叉树内两个节点的最长距离

          本文链接:https://www.haomeiwen.com/subject/ohyahctx.html