“常用公式”在线计算,“设计手册”在线查询
如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序,求一棵二叉树中相距最远的两个节点之间的距离。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 支持支持 反对反对

共 1 个关于本帖的回复 最后回复于 2013-8-16 10:46

沙发
陈荣莲 八品司务 发表于 2013-8-16 10:46:43 | 只看该作者
研发埠培训中心
This isinteresting... Also recursively, the longest distance between two nodes must beeither from root to one leaf, or between two leafs. For the former case, it’sthe tree height. For the latter case, it should be the sum of the heights ofleft and right subtrees of the two leaves’ most least ancestor.The first case is also the sum the heights of subtrees, just the height + 0.intmaxDistance(Node * root) {  int depth;  return helper(root, depth);}int helper(Node * root, int &depth) {  if (root == NULL) {    depth = 0; return 0;  }  int ld, rd;  int maxleft = helper(root->left, ld);  int maxright = helper(root->right, rd);  depth = max(ld, rd)+1;  return max(maxleft, max(maxright, ld+rd));}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注我们

360网站安全检测平台