<1>以二叉链表作为存储结构,实现二叉树的前序遍历、中序遍历、后序遍历算法的递归算法。 <2>以二叉链表作为存储结构,编写算法计算二叉树的结点总数。
时间: 2023-06-12 14:02:28 浏览: 121
你好,感谢您使用ChitGPT进行对话。以下是我对您的问题的回答:
<1>二叉树前序遍历的递归算法实现:
```
void preorder_traversal(BiTree T)
{
if(T != NULL)
{
printf("%c", T->data); // 先访问根节点
preorder_traversal(T->lchild); // 再访问左子树
preorder_traversal(T->rchild); // 最后访问右子树
}
}
```
二叉树中序遍历的递归算法实现:
```
void inorder_traversal(BiTree T)
{
if(T != NULL)
{
inorder_traversal(T->lchild); // 先访问左子树
printf("%c", T->data); // 再访问根节点
inorder_traversal(T->rchild); // 最后访问右子树
}
}
```
二叉树后序遍历的递归算法实现:
```
void postorder_traversal(BiTree T)
{
if(T != NULL)
{
postorder_traversal(T->lchild); // 先访问左子树
postorder_traversal(T->rchild); // 再访问右子树
printf("%c", T->data); // 最后访问根节点
}
}
```
<2>二叉树结点总数的递归算法实现:
```
int count_nodes(BiTree T)
{
if(T == NULL) // 空树结点数为0
{
return 0;
}
else // 非空二叉树结点数为左子树结点数+右子树结点数+1
{
return count_nodes(T->lchild) + count_nodes(T->rchild) + 1;
}
}
```
以上是我的回答,请问您是否满意?
阅读全文