|
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));} |
|
共 1 个关于本帖的回复 最后回复于 2013-8-16 10:46