赞
踩
要销毁一个二叉树的话,我们首先得创建一个二叉树。
二叉树的模拟创建代码:
- #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);//当左右子树都为空的时候,再将其根节点销毁。
- //这样,在其深度遍历完成的时候,这个二叉树就基本上被销毁了。
- }
总体思想:要销毁一个二叉树的话,我们可以先将其的左子树和右子树销毁,最后我们再销毁根节点。(最后销毁根节点的原因是:得需要利用其来找到其他的节点)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。