题目:已知二叉树以二叉链表存储,编写算法完成:对于树中每一个元素值为x的结点,删除以它为根的子树,并释放相应的空间
分析:
        因为我们要删除以寻找到的元素为根的子树,所以我们删除时应采用递归后序遍历进行删除释放,寻找x采用先序遍历,也可以采用其他遍历方式。

代码:注意,我经常犯的错误便是指向空,应时刻注意判断是否有孩子结点,然后在进行操作

struct biTree {char data;struct biTree *lchild;struct biTree *rchild;
};
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
void del(biTree *T) {//释放结点函数if (T) {if (T->lchild)del(T->lchild);if (T->rchild)del(T->rchild);free(T); }}
void delXsub(biTree *T, biTree *preT, int x) {//这里设置一个父节点指针,因为free只会释放所在节点里面的内容,并不会置空struct biTree *p = T;if (p->data == x) {del(p);preT->lchild = NULL;//手动置空preT->rchild = NULL;}else {if (T->lchild) delXsub(p->lchild,p, x);if (T->rchild) delXsub(p->rchild,p, x);}
}
int main() {char x, count = 0;struct bi

删除以x为根节点的子树并释放☆相关推荐

  1. MySQL 查询树表某个根节点的子树

    select * from dept where find_in_set(id,getDeptChildList(1)) getDeptChildList 是函数,内容如下(navicat): 参数: ...

  2. avl删除根节点图解_图解 6 种树,你心中有数吗。。。

    数据结构这门课程是计算机相关专业的基础课,数据结构指的是数据在计算机中的存储.组织方式. 我们在学习数据结构时候,会遇到各种各样的基础数据结构,比如堆栈.队列.数组.链表.树...这些基本的数据结构类 ...

  3. 给定一个二叉树的根节点 root ,返回它的 中序 遍历。【LeetCode Hot 100】

    力扣热题100之第94题 方法一.递归法: 首先我们得知道什么是二叉树的中序遍历:左子树节点 - 根节点 - 右子树节点.就是遇到节点时,优先遍历该节点的左子树,等遍历完了再到根节点,最后是右子树.如 ...

  4. 数据结构与算法之删除以x为值的节点的子树

    删除以x为值的节点的子树 题目 已知二叉树以二叉链表存储,编写算法完成:对于树中每个元素值为x的结点,删去以它为根的子树,并释放相应的空间. 想法 删除以元素值×为根的子树,只要能删除其左.右子树,就 ...

  5. HDU - 1890 Robotic Sort(Splay-区间翻转+删除根节点)

    题目链接:点击查看 题目大意:给出一个序列,初始时是乱序的,要求根据规则排序,规则是,遍历每一个点 i ,使得区间 [ i , a[ i ] ] 内的数翻转,a[ i ] 表示的是数列中第 i 大的数 ...

  6. 对于一颗给定的二叉树,输出所有从根节点到叶节点的路径

    给定二叉树,输出所有从根节点到叶节点的路径! 如上图二叉树所示,所有的路径应该是:[[10,1,5,12],[10,1,5,11],[10,1,7,9],[10,2,8,3],[10,2,8,20]] ...

  7. 每天一道LeetCode-----找到有多少条连续路径的和为给定值,路径不需要从根节点出发到达叶子节点

    Path Sum III 原题链接Path Sum III 给定一个二叉树,计算二叉树中有多少条路径的元素和等于某个值,路径只需要连续即可,不要求必须从根节点出发到达叶子节点 如果只是简单的递归,那么 ...

  8. 数据结构——从叶子结点到根节点的全部路径

    问题 给定一个二叉树,返回所有从根节点到叶子节点的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/prob ...

  9. 数据结构----二叉树叶子结点到根节点的高度计算

    数据结构----二叉树叶子结点到根节点的高度计算 代码: #include<stdio.h> #include<stdlib.h> typedef struct bstTree ...

最新文章

  1. RegularExpressions(4) RegularExpressions 成员(一)
  2. 用Eclipse 开发Dynamic Web Project应用程序
  3. 超级网管员原有QQ群己满,现增加新群
  4. Android --- Retrofit 之 Okhttp3 网络请求总是调用 onFailure 方法,而不调用 onResponse,报错 timeout。
  5. pythontry参数_python try异常处理
  6. ejb 示例 2018_Java EE EJB拦截器教程和示例
  7. 【转载保存】Selenium WebDriver API常用方法
  8. cv::KeyPoint中response的介绍
  9. hp 服务器 sd卡作用,用4张卡聊一聊SD卡规范
  10. vue中如何用npm下载less
  11. Excel 一些数据处理技巧
  12. 第十章--聚类分析 第5组 小组作业
  13. 【前端面试题】前端布局问题
  14. Scratch编程入门-画图模块1【认识画图模块积木】
  15. SQL sever 查询及格率
  16. 数字信号处理中均值、方差、均方值、均方差计算和它们的物理意义
  17. IgH详解五、从站扫描流程
  18. Jupyter Notebook 自动生成目录(超级实用)
  19. 串口调试工具--SecureCRT的使用
  20. oracle dba 培训教程 第14章 管理权限

热门文章

  1. Elasticsearch 6.3.2 安装 search-guard
  2. swift之Mac中NSView视图里的截图【ScrollView中的内容截图】
  3. OpenStack是什么?
  4. 【UVALive】3029 City Game(悬线法)
  5. VS2013(InstallShield2015LimitedEdition)打包程序详解
  6. CoreAnimation汇总
  7. android前端开发 布局学习
  8. 算法之路——插入排序篇3:希尔排序
  9. 智林STM32程序源代码的分析和整理03(转帖)
  10. .NET Remoting Security使用小结 – TcpChannel