用C语言编程(对二叉树的操作)
解决时间 2021-04-24 19:19
- 提问者网友:沉默的哀伤
- 2021-04-24 06:35
(1) 建立一棵含有n个结点的二叉树,采用二叉链表存储;
(2) 前序(或中序、后序)遍历该二叉树。
最佳答案
- 五星知识达人网友:鱼忧
- 2021-04-24 07:16
struct bitree
{
int value;
bitree left;
bitree right;
}
void bianli(bitree bt)
{
cout《《bt。value;
banli(bt。left);
bianli(bt.right);
}
全部回答
- 1楼网友:蓝房子
- 2021-04-24 08:30
这也是我以前写的,改了几处:
#include <stdio.h>
#include <stdlib.h>
// 二叉树节点结构
typedef struct _btree {
int v;
struct _btree* l;
struct _btree* r;
}**btree, *node;
// 插入一个节点
node insert(btree r, int v)
{
node t, p, n;
t = (node)malloc(sizeof(_btree));
t->v = v;
t->l = t->r = NULL;
p = NULL, n = *r;
while(n) {
p = n;
n = v < n->v ? n->l : n->r;
}
return (p ? v < p->v ? p->l : p->r : *r) = t;
}
// 简单从数组构造一棵树
node create(int* beg, int* end)
{
node root;
root = NULL;
while(beg != end)
insert(&root, *beg++);
return root;
}
// 中序遍历
void inorder(node root)
{
if(root) {
inorder(root->l);
printf("%d ", root->v);
inorder(root->r);
}
}
// 销毁二叉树,释放内存
void destruct(node root)
{
if(root) {
destruct(root->l);
destruct(root->r);
free(root);
}
}
int main()
{
int a[] = { 9,3,8,2,1,6,7,4,5,0 };
node root;
root = create(a, a + 10);
inorder(root);
destruct(root);
return 0;
}
我要举报
大家都在看
推荐资讯