编写递归算法对于二叉树中每一个元素值为x的结点删去以它为根的子树并释放相应的空间

上传人:人*** 文档编号:500508981 上传时间:2023-04-13 格式:DOCX 页数:4 大小:8.38KB
返回 下载 相关 举报
编写递归算法对于二叉树中每一个元素值为x的结点删去以它为根的子树并释放相应的空间_第1页
第1页 / 共4页
编写递归算法对于二叉树中每一个元素值为x的结点删去以它为根的子树并释放相应的空间_第2页
第2页 / 共4页
编写递归算法对于二叉树中每一个元素值为x的结点删去以它为根的子树并释放相应的空间_第3页
第3页 / 共4页
编写递归算法对于二叉树中每一个元素值为x的结点删去以它为根的子树并释放相应的空间_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《编写递归算法对于二叉树中每一个元素值为x的结点删去以它为根的子树并释放相应的空间》由会员分享,可在线阅读,更多相关《编写递归算法对于二叉树中每一个元素值为x的结点删去以它为根的子树并释放相应的空间(4页珍藏版)》请在金锄头文库上搜索。

1、编写递归算法对于二叉树中每一个元素值为x的结点删去以它为根的子树并释放相应的空间Revised by BLUE on the afternoon of December 12,2020.编写递归算法,对于二叉树中每一个元素值为x的结点,删去以它为根的子树,并释放相应的空间。解答多种方法:(5种)1:StatusDel-subtree(Bitreebt)删除bt所指二叉树,并释放相应的空间if(bt)(Del-subtree(bt-lchild);Del-subtree(bt-rchild);free(bt);returnOK;/Del-subtreeStatusSearch-del(Bitre

2、ebt,TelemTypex)在bt所指的二叉树中,查找所有元素值为x的结点,并删除以它为根的子树if(bt)(if(bt-data=x)Del-subtree(bt);else(Search-Del(bt-lchild,x);Search-Del(bt-rchild,x);returnOK;/Search-Del2:编写递归算法,对于二叉树中每一个元素值为X的结点,删去以它为根的子 树,并释放相应的空间。voidDel_Sub(BiTreeT)(if(T-lchild)Del_Sub(T-lchild);if(T-rchild)Del_Sub(T-rchild);free(T);void(i

3、f(T-data=x)Del_Sub(T);elseif(T-lchild)Del_Sub_x(T-lchild,x);if(T-rchild)Del_Sub_x(T-rchild,x);3.编写递归算法:对于二叉树中每一个元素值为x的结点,删去以它为根的子树,并释放相应的空间。提示:(1)按先序查找;(2)超前查看子结点(3)按后序释放;voidDelSubTree(BiTree*bt,DataTypex)(if(*bt!二NULL&(*bt)-data=x)(FreeTree(*bt);*bt=NULL;elseDelTree(*bt,x)voidDelTree(BiTreebt,Data

4、Typex)(if(bt)(if(bt-LChild&bt-LChild-data=x)(FreeTree(bt-LChild);bt-LChild=NULL;if(bt-RChild&bt-RChild-data=x)(FreeTree(bt-RChild);bt-RChild=NULL;DelTree(bt-LChild,x);DelTree(bt-RChild,x);4:结点定义templateclassBstTree;templateclassBstNode(friendclassBstTree;private:intLevel;Tdata;BstNode*LeftPtr;BstNod

5、e*RightPtr;public:BstNode(constT&info=0,BstNode*left=0,BstNode*right=0,intlev=0)(data=info;LeftPtr=left;RightPtr=right;Level=lev;/释放子树空间,注意传递一个二维指针(即searchTree函数返回的结点的地址),即指针的地址,以此来释放空间templatevoidBstTree:releaseHelper(BstNode*root)(if(*(root)!=0)(BstNode*tempt=(*root);releaseHelper(&(*root)-LeftPtr

6、);releaseHelper(&(*root)-RightPtr);coutdata;deletetempt;/查找要删除的子树的根结点templateBstNode*BstTree:serchTree(constT&value)(BstNode*tempt=Root;boolfound=false;for(;)(if(found|tempt=0)break;if(valuedata)tempt=tempt-LeftPtr;elseif(valuetempt-data)tempt=tempt-RightPtr;elsefound=true;if(found)returntempt;/查找到要删除子树的根节点elsereturnNULL;/否则返回 NULL

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号