【C语言】二叉树的模拟销毁和创建

二叉树的销毁操作

             要销毁一个二叉树的话,我们首先得创建一个二叉树。

  二叉树的模拟创建代码:

#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include <time.h>





typedef  int BTDataType;//二叉树存放数据的类型

typedef struct BinaryTreeNode {//二叉树结构的定义

	struct BinaryTreeNode* left;//二叉树的左节点
	struct BinaryTreeNode* right;//二叉树的右节点
	BTDataType data;//二叉树的数据域

}BTNode;//将定义的二叉树结构名字重新简化定义



BTNode* BuyNode(BTDataType x) {//创建并且同时初始化二叉树的一个节点

	BTNode* node = (BTNode*)malloc(sizeof(BTNode));

	if (node == NULL) {
		printf("malloc fail!");
		exit(-1);
	}

	node->left = NULL;
	node->right = NULL;
	node->data = x;

	return node;
}





BTNode* CreatBinaryTree() {//模拟创建一个二叉树

	BTNode* node1 = BuyNode(1);
	BTNode* node2 = BuyNode(2);
	BTNode* node3 = BuyNode(3);
	BTNode* node4 = BuyNode(4);
	BTNode* node5 = BuyNode(5);
	BTNode* node6 = BuyNode(6);

	node1->left = node2;
	node1->right = node4;
	node2->left = node3;
	node4->left = node5;
	node4->right = node6;

	return node1;

}


int main(){

   BTNode* root = CreatrTree();

  return 0;
}

创建完成后的二叉树如下图所示:

                  

 

   

二叉树的销毁代码:

void TreeDestory(BTNode* root) {
	
	if (root == NULL) {//当根节点为空的时候,直接返回上一层就可以。
		return;
	}

	//printf("%d ", root->data);//可以借助打印来看程序是否执行正确

	TreeDestory(root->left);//先遍历左子树
	TreeDestory(root->right);//再遍历右子树

	free(root);//当左右子树都为空的时候,再将其根节点销毁。
	//这样,在其深度遍历完成的时候,这个二叉树就基本上被销毁了。
}

总体思想:要销毁一个二叉树的话,我们可以先将其的左子树和右子树销毁,最后我们再销毁根节点。(最后销毁根节点的原因是:得需要利用其来找到其他的节点)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值