【无标题】

销毁二叉树(递归和非递归)

 

//递归的方式
void Destroy(BiTree *root) {
//销毁操作必须按照后续遍历的顺序
if (!(*root))
return;
else {
Destroy(&(*root)->lchild);
Destroy(&(*root)->rchild);
free(*root);
*root = NULL;
}
}

头文件

#include "Queue.h"
#include "Stack.h"
#include "define.h"
#ifndef __BINARYTREE_H
#define __BINARYTREE_H
typedef char BitreeElemType;
typedef struct __BiNode {
BitreeElemType data;
__BiNode *lchild, *rchild;
} BiNode, *BiTree;
void Creat_BiTree_Pre(BiTree *T);
void InOrder(BiTree T);
void InOrder_unrec(BiTree T);
void PreOrder(BiTree T);
void PostOrder(BiTree T);
void LevelOrer(BiTree T);
void Copy(BiTree *Tnew, const BiTree T);
int Depth(BiTree T);
int Nodes(BiTree T);
void Destroy_unrec(BiTree *root);
void Destroy(BiTree *root);
#endif

线索二叉树 Threaded Binary Tree(了解即可)

前驱、后继可以以前、中、后的一个序遍历为准

数据类型定义 

typedef struct BiThrNode {
int data;
int ltag, rtag; //为了区分左右孩子指向为空还是前驱或后继,新增ltag,rtag
BiThrNode * lchidl, *rchild;
} *BiThrTree;

为了区分指针指向的是前驱后继还是左右孩子,需加上ltag/rtag两个标志域

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值