Tree Diameter

来源:互联网 发布:生成对抗网络 论文 编辑:程序博客网 时间:2024/06/01 09:19

The function below returns the diameter of a tree. A tree's diameter isdefined after the function. Write a recurrence for this function andsolve it yielding the running time using big-Oh in terms of the numberof nodes in a tree.

int diameter(Tree * t) // post: return diameter of t{    if (t == 0) return 0;    int lheight = height(tree->left);    int rheight = height(tree->right);    int ldiameter = diameter(tree->left);    int rdiameter = diameter(tree->right);        return max(lheight + rheight + 1, max(ldiameter,rdiameter));}
The following function returns the height of a tree (the numberof nodes on the longest root-to-leaf path).

int height(Tree * t) // postcondition: returns height of tree with root t{    if (t == 0)        return 0;    else         return (1 + max(height(t->left), height(t->right)); }
where the function max returns the largest of its two integerparameters. Thediameter of a tree (sometimes called the width) is the numberof nodes on the longest path between two leaves in the tree. Thediagram below shows two trees each with diameter nine, the leaves thatform the ends of a longest path are shaded (note that there is more thanone path in each tree of length nine, but no path longer than nine nodes).

The diameter of a tree T is the largest of thefollowing quantities:

  • the diameter of T's left subtree
  • the diameter of T's right subtree
  • the longest path between leaves that goes through the root of T(this can be computed from the heights of the subtrees ofT)
http://www.cs.duke.edu/courses/spring00/cps100/assign/trees/diameter.html

0 0
原创粉丝点击