广工数据结构anyview答案(7)

2019-02-16 18:05

TElemType data;

struct BiTNode *lchild, *rchild; } BiTNode, *BiTree; **********/

int Depthx(BiTree T, TElemType x)

/* 求二叉树中以值为x的结点为根的子树深度 */ {

BiTree A;

DepthxH( T, x , A) ; T = A;

return DepthxF( T); }

/****40***********************

void DepthxH(BiTree &T,char x , BiTree &A){ if(T==NULL)return ; if(T->data == x) { A = T;

T = NULL; return ;}

DepthxH(T->lchild,x , A); DepthxH(T->rchild,x , A); }

void DestroyBiTree(BiTree &T) { if(T!= NULL){

DestroyBiTree(T->lchild); DestroyBiTree(T->rchild); free(T); } }

/**********

【题目】编写递归算法:对于二叉树中每一个元素值为x 的结点,删去以它为根的子树,并释放相应的空间。 二叉链表类型定义: typedef struct BiTNode { TElemType data;

struct BiTNode *lchild, *rchild; } BiTNode, *BiTree; **********/

void ReleaseX(BiTree &T, char x)

/* 对于二叉树T中每一个元素值为x的结点, */ /* 删去以它为根的子树,并释放相应的空间 */ {

BiTree A,TT;

DepthxH( T, x , A); TT = A;

DestroyBiTree(TT); }

/***43*******

【题目】编写复制一棵二叉树的递归算法。 二叉链表类型定义:

typedef char TElemType; // 设二叉树的元素为char类型 typedef struct BiTNode { TElemType data;

struct BiTNode *lchild, *rchild; } BiTNode, *BiTree; **********/

void CopyBiTree(BiTree T, BiTree &TT) /* 递归复制二叉树T得到TT */ {

BiTree t;

t = (BiTree)malloc(sizeof(BiTNode)); t->lchild = NULL; t->rchild = NULL; if(T ==NULL) return ; t->data = T->data ; TT = t;

CopyBiTree(T->lchild, TT->lchild); CopyBiTree(T->rchild, TT->rchild); }

/**47********

【题目】试写一非递归算法,在二叉查找树T中插入元素e。 二叉查找树的类型BSTree定义如下: typedef struct { KeyType key;

... ... // 其他数据域 } TElemType;

typedef struct BSTNode { TElemType data;

struct BSTNode *lchild,*rchild; } BSTNode, *BSTree; **********/

Status InsertBST_I(BSTree &T, TElemType k)

/* 在二叉查找树T中插入元素e的非递归算法 */ {

BSTree p,L,q = T ;

p = (BSTree)malloc(sizeof(BSTNode)); if(p == NULL) return FALSE;

p->data = k; p->lchild = NULL; p->rchild = NULL; while(q!=NULL) {

if(q->data.key == k.key) return FALSE; if(q->data.key > k.key) {

if(q->lchild!=NULL) q = q->lchild; else q->lchild = p; }

if(q->data.key < k.key) {

if(q->rchild!=NULL) q = q->rchild; else q->rchild = p; } } }

/**50********

【题目】试编写一个二叉排序树的判定算法。 二叉排序树的类型BSTree定义如下: typedef struct { KeyType key;

... ... // 其他数据域 } TElemType;

typedef struct BiTNode { TElemType data;

struct BSTNode *lchild, *rchild; }BSTNode, *BSTree; **********/

Status IsBSTree(BSTree T)

/* 判别二叉树T是否为二叉排序树。*/ /* 若是,则返回TRUE,否则FALSE */ {

if(T->lchild==NULL&&T->rchild==NULL) return TRUE; if(T->lchild->data.key < T->data.key && T->rchild->data.key > T->data.key && (T->lchild!=NULL&&T->rchild!=NULL) ) {

return IsBSTree(T->lchild)&&IsBSTree(T->rchild); }

if(T->lchild==NULL&&T->rchild!=NULL) return IsBSTree(T->rchild);

if(T->lchild!=NULL&&T->rchild==NULL) return IsBSTree(T->lchild); return FALSE; }

/***53*******

【题目】编写递归算法,从大到小输出给定二叉排序树 中所有关键字不小于x的数据元素。 二叉排序树的类型BSTree定义如下: typedef struct {

KeyType key;

... ... // 其他数据域 } TElemType;

typedef struct BSTNode { TElemType data;

struct BSTNode *lchild,*rchild; }BSTNode, *BSTree; **********/

void OrderOut(BSTree T, KeyType k, void(*visit)(TElemType)) /* 调用visit(T->data)输出 */ {

BSTree p = T; if(p!=NULL) {

if(p->rchild == NULL&&p->lchild == NULL&&p->data.key>=k) visit(p->data); if(p->rchild != NULL) {

OrderOut(p->rchild ,k , visit);

if(p->data.key >= k) visit(p->data);

}

if(p->lchild != NULL&&p->rchild != NULL) {

OrderOut(p->lchild ,k , visit); }

if(p->lchild != NULL&&p->rchild == NULL) {

if(p->data.key >= k) visit(p->data); OrderOut(p->lchild ,k , visit); } } return ; }

/***60*******

【题目】试写一非递归算法,在二叉查找树T中插入元素e。 二叉查找树的类型BSTree定义如下: typedef struct { KeyType key;

... ... // 其他数据域 } TElemType;

typedef struct BSTNode { TElemType data;

struct BSTNode *lchild,*rchild; } BSTNode, *BSTree; **********/

Status InsertBST_I(BSTree &T, TElemType k)

/* 在二叉查找树T中插入元素e的非递归算法 */ {

BSTree p,L,q = T ;

p = (BSTree)malloc(sizeof(BSTNode)); if(p == NULL) return FALSE;

p->data = k; p->lchild = NULL; p->rchild = NULL; while(q!=NULL) {

if(q->data.key == k.key) return FALSE; if(q->data.key > k.key) {

if(q->lchild!=NULL) q = q->lchild; else q->lchild = p; }

if(q->data.key < k.key) {

if(q->rchild!=NULL) q = q->rchild;


广工数据结构anyview答案(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:我国农村假冒伪劣商品现状研究及对策

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: