完成求二叉树中节点间最大距离的代码。两个节点间的距离为包括的节点的个数,路径 上的每个节点只能被包含一次。
思路:相距最远的两节点在树中的分布有两种情况:
1、两节点分别在根结点的左右子树中,其最远距离为两节点分别到达根结点的路径长度之和;
2、两节点同时在根结点的同一个子树上,设此时两个节点的最小祖先节点为p,此时这个最远距离位于树的以p为根结点的子树中,则其最远距离为两节点分别到达节点p的路径之和。
也就是说,最大距离有三种情况:
1、等于根的左子树的节点最大距离
2、等于根的右子树的节点最大距离
3、最大距离跨过左子树、根和右子树,为左子树最深叶节点到根,再到右子树最深叶节点的距离