每天学习一算法系列(11) (求二叉树中节点的最大距离)

来源:互联网 发布:奖状证书制作软件 编辑:程序博客网 时间:2024/05/16 09:52

题目:求二叉树中节点的最大距离.
如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。
写一个程序,求一棵二叉树中相距最远的两个节点之间的距离。

 

题目来源于:http://topic.csdn.net/u/20101011/16/2befbfd9-f3e4-41c5-bb31-814e9615832e.html

 

思路一:

题目要求一颗二叉树中两个节点之间的最大距离,由于父子节点之间边是双向的,所以这道题转换为求左子树的最大深度 + 右子树的最大深度就是二叉树中节点的最大距离。

例如:以下一颗树:

          5

         / /

        4  8

           / /

          7  12

             /

           10

那么它的最大距离为4,即:4-->5-->8-->12-->10.其中"-->"的个数就是最大的距离数4.

 

代码如下:

 

 

思路二:

其实想法跟思路一是类似的,具体实现看以下代码,不过你会发现下面的实现没有比思路一中的实现更为容易理解。

 

代码如下:

原创粉丝点击