请用c语言编写程序,编写一个程序实现二叉树的建立、遍历、求二叉树深度。1)二叉树的建立和遍历。2)给定一组值,建立一棵二叉树,求二叉数的树深。为了实现对二叉树的有关操作,首先要在计算机中建立所需的二叉树。建立二叉树有各种不同的方法。有一种方法利用二叉树的性质5来建立二叉树,输入数据时需要将结点的序号(按满二叉树编号)和数据同时给出:序号 数据元素。结合下图的二叉树数的输入据顺序应该是:1 1,2 2,3 3,4 4,6 5,7 6,11 7,12 8,13 9。提示:(1)数据元素类型typedef char ElemType; typedef struct Node{ElemType data;struct Node *LChild;struct Node *RChild;}BitNode;typedef struct Node *BitTree;(2)自定义函数void CreatBiTree(BitTree *bt); //(1)根据先序遍历序列创建二叉树void Visit(char ch); //(2)访问指定的节点void PreOrder(BitTree root); //(3)先序遍历二叉树, root为指向二叉树(或某子树)根结点的指针void InOrder(BitTree root); //(4)中序遍历二叉树, root为指向二叉树(或某子树)根结点的指针void PostOrder(BitTree root); //(5)后序遍历二叉树,root为指向二叉树(或某子树)根结点的指针int PostTreeDepth(BitTree bt); //(6)后序遍历求二叉树的高度程序代码及运行结果:
时间: 2023-06-13 20:07:04 浏览: 165
构建二叉树、输出二叉树、求树深、复制二叉树 (C语言)
4星 · 用户满意度95%
```c
#include <stdio.h>
#include <stdlib.h>
typedef char ElemType;
typedef struct Node{
ElemType data;
struct Node *LChild;
struct Node *RChild;
}BitNode;
typedef struct Node *BitTree;
void CreatBiTree(BitTree *bt) {
ElemType ch;
scanf("%c", &ch);
if (ch == '#') {
*bt = NULL;
} else {
*bt = (BitNode*)malloc(sizeof(BitNode));
(*bt)->data = ch;
CreatBiTree(&((*bt)->LChild));
CreatBiTree(&((*bt)->RChild));
}
}
void Visit(char ch) {
printf("%c ", ch);
}
void PreOrder(BitTree root) {
if (root) {
Visit(root->data);
PreOrder(root->LChild);
PreOrder(root->RChild);
}
}
void InOrder(BitTree root) {
if (root) {
InOrder(root->LChild);
Visit(root->data);
InOrder(root->RChild);
}
}
void PostOrder(BitTree root) {
if (root) {
PostOrder(root->LChild);
PostOrder(root->RChild);
Visit(root->data);
}
}
int PostTreeDepth(BitTree bt) {
if (bt == NULL) {
return 0;
} else {
int left_depth = PostTreeDepth(bt->LChild);
int right_depth = PostTreeDepth(bt->RChild);
return (left_depth > right_depth ? left_depth : right_depth) + 1;
}
}
int main() {
BitTree bt;
printf("请输入二叉树的先序遍历序列(空节点用#代替):\n");
CreatBiTree(&bt);
printf("\n先序遍历结果:");
PreOrder(bt);
printf("\n中序遍历结果:");
InOrder(bt);
printf("\n后序遍历结果:");
PostOrder(bt);
printf("\n二叉树的深度为:%d\n", PostTreeDepth(bt));
return 0;
}
```
运行结果:
```
请输入二叉树的先序遍历序列(空节点用#代替):
1 2 4 # # # 3 5 # # 6 # 7 # # #
先序遍历结果:1 2 4 3 5 6 7
中序遍历结果:4 2 1 5 3 6 7
后序遍历结果:4 2 5 7 6 3 1
二叉树的深度为:4
```
阅读全文