PTA 6-12 (二叉树的递归删除)
BinTree Insert( BinTree BST, ElementType X )
{
if (BST==NULL) {
BinTree tmp=(BinTree)malloc(sizeof(struct TNode));
tmp->Data=X;
tmp->Left=tmp->Right=NULL;
return tmp;
};
if (X<BST->Data)
BST->Left=Insert(BST->Left,X);
else
BST->Right=Insert(BST->Right,X);
return BST;
} Position Find( BinTree BST, ElementType X ) {
if (BST==NULL||BST->Data==X) return BST;
if (X<BST->Data) return Find (BST->Left,X);
else return Find (BST->Right,X);
} Position FindMin( BinTree BST ) {
if (BST==NULL||BST->Left==NULL) return BST;
else return FindMin (BST->Left);
} Position FindMax( BinTree BST ) {
if (BST==NULL||BST->Right==NULL) return BST;
else return FindMax (BST->Right);
} BinTree Delete( BinTree BST, ElementType X ) {
BinTree TMP;
if (BST==NULL) {
printf ("Not Found\n");
return NULL;
}
if (X<BST->Data)
BST->Left=Delete (BST->Left,X);
else if (X>BST->Data)
BST->Right=Delete (BST->Right,X);
else {
if (BST->Left!=NULL&&BST->Right!=NULL) {
TMP=FindMin (BST->Right);
BST->Data=TMP->Data;
BST->Right=Delete (BST->Right,TMP->Data);
}
else {
TMP=BST;
if (BST->Left!=NULL)
BST=BST->Left;
else if (BST->Right!=NULL)
BST=BST->Right;
else BST=NULL;
}
}
return BST;
}
PTA 6-12 (二叉树的递归删除)的更多相关文章
- 递归删除资源树 Ztree
前言 最近项目里有这么一个需求:现在有一个用Ztree编写的资源树,当删除资源树的某个节点时,则将此节点下面的所有节点全部删除,这里显然就用到了递归:若此节点被删除后无其它的兄弟节点了,我们还需要将其 ...
- 数据结构(3) 第三天 栈的应用:就近匹配/中缀表达式转后缀表达式 、树/二叉树的概念、二叉树的递归与非递归遍历(DLR LDR LRD)、递归求叶子节点数目/二叉树高度/二叉树拷贝和释放
01 上节课回顾 受限的线性表 栈和队列的链式存储其实就是链表 但是不能任意操作 所以叫受限的线性表 02 栈的应用_就近匹配 案例1就近匹配: #include <stdio.h> in ...
- C#追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件
C#追加文件 StreamWriter sw = File.AppendText(Server.MapPath(".")+"\\myText.txt"); sw ...
- 【LeetCode-面试算法经典-Java实现】【145-Binary Tree Postorder Traversal(二叉树非递归后序遍历)】
[145-Binary Tree Postorder Traversal(二叉树非递归后序遍历)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a bin ...
- day18 时间:time:,日历:calendar,可以运算的时间:datatime,系统:sys, 操作系统:os,系统路径操作:os.path,跨文件夹移动文件,递归删除的思路,递归遍历打印目标路径中所有的txt文件,项目开发周期
复习 ''' 1.跨文件夹导包 - 不用考虑包的情况下直接导入文件夹(包)下的具体模块 2.__name__: py自执行 '__main__' | py被导入执行 '模块名' 3.包:一系列模块的集 ...
- python dict clear只能删除一层,不能够递归删除。
void PyDict_Clear(PyObject *op) { dictobject *mp; dictentry *ep, *table; int table_is_malloced; Py_s ...
- 【File】递归删除文件夹中子级文件/夹,并删除文件夹
今天有这样一个需求,需要删除某一个文件夹,但是文件夹中还有子级的文件 或者还可能会有文件夹在里面,所以就需要使用一个简单的递归才能将文件夹删除成功,包括文件夹中的子级文件/夹.!!! 其实很简单,就一 ...
- php 递归创建目录、递归删除非空目录、迭代创建目录
递归创建目录 方法一 function mk_dir($path){ if(is_dir($path)){ //参数本身是一个目录 return true; } if(is_dir(dirname($ ...
- UVa 548 (二叉树的递归遍历) Tree
题意: 给出一棵由中序遍历和后序遍历确定的点带权的二叉树.然后找出一个根节点到叶子节点权值之和最小(如果相等选叶子节点权值最小的),输出最佳方案的叶子节点的权值. 二叉树有三种递归的遍历方式: 先序遍 ...
随机推荐
- Struts 2 初步入门(一)
搭建Struts 2环境步骤 下载jar包----->创建web项目---->创建并完善相关配置文件---->创建action并测试启动 下载jar包访问网站:http://stru ...
- 实验:输入一篇英文新闻,以“#”结束,统计其中a-z这26个字母各出现的次数和总字符个数。(不区分大小写)
代码如下: #include <iostream> using namespace std; int main() { char ch; char s_letter[26]={'a','b ...
- matlab画图变粗脚本
http://blog.sina.com.cn/s/blog_708637950100uag0.html figure_FontSize=18;set(get(gca,'XLabel'),'FontS ...
- python 转换代码格式
import os dirname="C:\\Users\\haier\\Desktop\\new" def walk(path): for item in os.listdir( ...
- react router @4 和 vue路由 详解(七)react路由守卫
完整版:https://www.cnblogs.com/yangyangxxb/p/10066650.html 12.react路由守卫? a.在之前的版本中,React Router 也提供了类似的 ...
- laravel模型关联:
一对一hasOne(用户-手机号) 一对多has Many(文章-评论) 一对多反向belongsTo(评论-文章) 多对多belongsToMany(用户-角色) 远层一对多hasManyThrou ...
- 将数组,矩阵存入csv文件中
我们在做各种模型训练时,往往会先将数据处理成矩阵,然后交给建模的人去训练.这时通常数据清洗者提交的是保存了矩阵的文件,一般为TXT或csv,接下来主要讲解我在实现这个过程中遇到的一些问题. impor ...
- hybrid几种模式
native和web适合的场景 Native: 用户体验要求高 业务变动很小(如首页) 性能要求高 Web: 业务变化频繁(如广告) 性能要求低 展示性内容 hybrid App其实会有不同的分支 方 ...
- MySQL - exists与in的用法
[1]exists 对外表用loop逐条查询,每次查询都会查看exists的条件语句. 当 exists里的条件语句能够返回记录行时(无论记录行是多少,只要能返回),条件就为真 , 返回当前loop到 ...
- Calendar获取当前年份、月份、日期
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class Te ...