用c实现二叉树

用c实现如下的二叉树
#include "stdio.h"
#include "malloc.h"
struct btree
{
	char data;
	struct btree *lp;
	struct btree *rp;
};
struct btree * init();
void pretraverse(struct btree *);
void intraverse(struct btree *);
void postraverse(struct btree *);
int main()
{
	struct btree * p=init();
	printf("前序遍历的结果为:\n");
	pretraverse(p);
	printf("中序遍历的结果为:\n");
	intraverse(p);
	printf("后序遍历的结果为:\n");
	postraverse(p);
	return 0;
}
struct btree * init()
{
	struct btree *a=(struct btree *)malloc(sizeof(struct btree));
	struct btree *b=(struct btree *)malloc(sizeof(struct btree));
	struct btree *c=(struct btree *)malloc(sizeof(struct btree));
	struct btree *d=(struct btree *)malloc(sizeof(struct btree));
	struct btree *e=(struct btree *)malloc(sizeof(struct btree));
	a->data='a';
	b->data='b';
	c->data='c';
	d->data='d';
	e->data='e';
	a->lp=b;
	b->lp=NULL;
	b->rp=NULL;
	a->rp=c;
	c->lp=d;
	d->lp=NULL;
	d->rp=NULL;
	c->rp=e;
	e->lp=NULL;
	e->rp=NULL;
	return a;
}
void pretraverse(struct btree *p)
{
	printf("%c\t",p->data);
	if(NULL!=p->lp)
	{
		pretraverse(p->lp);
	}
	if(NULL!=p->rp)
	{
		pretraverse(p->rp);
	}
}
void intraverse(struct btree *p)
{
	if(NULL!=p->lp)
	{
		intraverse(p->lp);
	}
	printf("%c\t",p->data);
	if(NULL!=p->rp)
	{
		intraverse(p->rp);
	}
}
void postraverse(struct btree *p)
{
	if(NULL!=p->lp)
	{
		postraverse(p->lp);
	}
	if(NULL!=p->rp)
	{
		postraverse(p->rp);
	}
	printf("%c\t",p->data);
}


 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是C语言实现二叉树的示例代码: ```c #include <stdio.h> #include <stdlib.h> // 二叉树节点结构体 struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; }; // 创建新节点 struct TreeNode *create_node(int val) { struct TreeNode *node = (struct TreeNode *)malloc(sizeof(struct TreeNode)); node->val = val; node->left = NULL; node->right = NULL; return node; } // 插入节点 struct TreeNode *insert_node(struct TreeNode *root, int val) { if (root == NULL) { return create_node(val); } if (val < root->val) { root->left = insert_node(root->left, val); } else if (val > root->val) { root->right = insert_node(root->right, val); } return root; } // 中序遍历 void inorder_traversal(struct TreeNode *root) { if (root == NULL) { return; } inorder_traversal(root->left); printf("%d ", root->val); inorder_traversal(root->right); } int main() { // 创建二叉树 struct TreeNode *root = NULL; root = insert_node(root, 5); insert_node(root, 3); insert_node(root, 2); insert_node(root, 4); insert_node(root, 7); insert_node(root, 6); insert_node(root, 8); // 中序遍历 inorder_traversal(root); return 0; } ``` 以下是C++语言实现二叉树的示例代码: ```cpp #include <iostream> using namespace std; // 二叉树节点结构体 struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; // 插入节点 TreeNode* insert_node(TreeNode* root, int val) { if (root == NULL) { return new TreeNode(val); } if (val < root->val) { root->left = insert_node(root->left, val); } else if (val > root->val) { root->right = insert_node(root->right, val); } return root; } // 中序遍历 void inorder_traversal(TreeNode* root) { if (root == NULL) { return; } inorder_traversal(root->left); cout << root->val << " "; inorder_traversal(root->right); } int main() { // 创建二叉树 TreeNode *root = NULL; root = insert_node(root, 5); insert_node(root, 3); insert_node(root, 2); insert_node(root, 4); insert_node(root, 7); insert_node(root, 6); insert_node(root, 8); // 中序遍历 inorder_traversal(root); return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值