以二叉链表为存储结构,
发布网友
发布时间:2023-02-12 13:07
我来回答
共1个回答
热心网友
时间:2023-11-25 05:18
1. 中序遍历
void browseTree(Tree *root)
{
if (root == NULL)
{
return;
}
browseTree(root->left);
printf("%d",root->data);
browseTree(root->right);
}
2. 求总结点数
void TotalNode(Tree *root,int *total)
{
if (root == NULL)
{
return;
}
browseTree(root->left,total);
*total += 1;
browseTree(root->right,total);
}
调用方式:
int total = 0;
TotalNode(&root,&total);
其中root为树的根结点对象
3. 叶子总数
void TotalLeaf(Tree *root,int *total)
{
if (root == NULL)
{
return;
}
if (root->left == NULL && root->right == NULL)
{
*total += 1;
return;
}
browseTree(root->left,total);
browseTree(root->right,total);
}
调用方式:
int total = 0;
TotalNode(&root,&total);
其中root为树的根结点对象
3. 树的高度
void TotalLeaf(Tree *root, int curhigh, int *maxhigh)
{
if (root == NULL)
{
return;
}
if (curhigh > maxhigh)
{
*maxhigh = curhigh;
return;
}
browseTree(root->left, curhigh + 1, maxhigh);
browseTree(root->right, curhigh + 1, maxhigh);
}
调用方式:
int high = 0;
TotalNode(&root, 1, &high);
其中root为树的根结点对象