首页 > 其他 > 详细

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

时间:2017-02-02 23:39:08      阅读:305      评论:0      收藏:0      [点我收藏+]

描述

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

 

分析

二叉树中节点的最大距离=左子树中节点的最大距离+右子树中节点的最大距离

 

代码

class Node{
    public int data;
    public Node left;
    public Node right;
    public int leftMaxDistance; //存储该节点左子树距离根节点的最大距离
    public int rightMaxDistance; //存储该节点右子树距离根节点的最大距离
    public Node(int data){
        this.data=data;
        this.left=null;
        this.right=null;
    }
}

public class BinaryTree {
    private int maxLen=0;
    
    private int max(int a,int b){
        return a>b?a:b;
    }
    
    public void findMaxDistance(Node root){
        if(root==null)
            return;
        if(root.left==null)
            root.leftMaxDistance=0;
        if(root.right==null)
            root.rightMaxDistance=0;
        if(root.left!=null)
            findMaxDistance(root.left);
        if(root.right!=null)
            findMaxDistance(root.right);
        
        //计算左子树中距离根节点的最大距离
        if(root.left!=null)
            root.leftMaxDistance=max(root.leftMaxDistance,root.left.rightMaxDistance)+1;
        //计算右子树中距离根节点的最大距离
        if(root.right!=null)
            root.rightMaxDistance=max(root.rightMaxDistance,root.right.rightMaxDistance)+1;
        
        //获取二叉树所有节点的最大距离
        if(root.leftMaxDistance+root.rightMaxDistance>maxLen){
            maxLen=root.leftMaxDistance+root.rightMaxDistance;
        }
    }
}

 

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

原文:http://www.cnblogs.com/zadomn0920/p/6361822.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!