首页 > 代码库 > 算法题之求二叉树的最大距离

算法题之求二叉树的最大距离

二叉树是一种非常经典的数据结构。如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点之间的距离。

技术分享

下面我们随意构造出一棵二叉树,计算它的最大距离,如上图,节点之间单位距离为1,最大距离(红色线条)为5。

 

考虑使用中序遍历+递归的方法计算,用Java实现的代码如下:

package com.algo;

public class LearnTree {

    //树的结构如下:
       /* 1
       4     2
         5  3  6
                 7*/
    int maxLength = 0;
    public static void main(String[] args) {
        LearnTree learnTree = new LearnTree();
        learnTree.calMaxLength();
        System.out.println("二叉树最大距离:" + learnTree.maxLength);
    }

    public void calMaxLength() {
        Node head=new Node();
        head.data=http://www.mamicode.com/1;        // 根节点赋初值>

  

算法题之求二叉树的最大距离