求二叉树中节点的最大距离
描述
求二叉树中节点的最大距离
分析
二叉树中节点的最大距离=左子树中节点的最大距离+右子树中节点的最大距离
代码
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; } } }