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 (二叉树的递归删除)的更多相关文章

  1. 递归删除资源树 Ztree

    前言 最近项目里有这么一个需求:现在有一个用Ztree编写的资源树,当删除资源树的某个节点时,则将此节点下面的所有节点全部删除,这里显然就用到了递归:若此节点被删除后无其它的兄弟节点了,我们还需要将其 ...

  2. 数据结构(3) 第三天 栈的应用:就近匹配/中缀表达式转后缀表达式 、树/二叉树的概念、二叉树的递归与非递归遍历(DLR LDR LRD)、递归求叶子节点数目/二叉树高度/二叉树拷贝和释放

    01 上节课回顾 受限的线性表 栈和队列的链式存储其实就是链表 但是不能任意操作 所以叫受限的线性表 02 栈的应用_就近匹配 案例1就近匹配: #include <stdio.h> in ...

  3. C#追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件

    C#追加文件 StreamWriter sw = File.AppendText(Server.MapPath(".")+"\\myText.txt"); sw ...

  4. 【LeetCode-面试算法经典-Java实现】【145-Binary Tree Postorder Traversal(二叉树非递归后序遍历)】

    [145-Binary Tree Postorder Traversal(二叉树非递归后序遍历)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a bin ...

  5. day18 时间:time:,日历:calendar,可以运算的时间:datatime,系统:sys, 操作系统:os,系统路径操作:os.path,跨文件夹移动文件,递归删除的思路,递归遍历打印目标路径中所有的txt文件,项目开发周期

    复习 ''' 1.跨文件夹导包 - 不用考虑包的情况下直接导入文件夹(包)下的具体模块 2.__name__: py自执行 '__main__' | py被导入执行 '模块名' 3.包:一系列模块的集 ...

  6. python dict clear只能删除一层,不能够递归删除。

    void PyDict_Clear(PyObject *op) { dictobject *mp; dictentry *ep, *table; int table_is_malloced; Py_s ...

  7. 【File】递归删除文件夹中子级文件/夹,并删除文件夹

    今天有这样一个需求,需要删除某一个文件夹,但是文件夹中还有子级的文件 或者还可能会有文件夹在里面,所以就需要使用一个简单的递归才能将文件夹删除成功,包括文件夹中的子级文件/夹.!!! 其实很简单,就一 ...

  8. php 递归创建目录、递归删除非空目录、迭代创建目录

    递归创建目录 方法一 function mk_dir($path){ if(is_dir($path)){ //参数本身是一个目录 return true; } if(is_dir(dirname($ ...

  9. UVa 548 (二叉树的递归遍历) Tree

    题意: 给出一棵由中序遍历和后序遍历确定的点带权的二叉树.然后找出一个根节点到叶子节点权值之和最小(如果相等选叶子节点权值最小的),输出最佳方案的叶子节点的权值. 二叉树有三种递归的遍历方式: 先序遍 ...

随机推荐

  1. VNC安装配置及连接(CentOS)

    1.安装VNC yum install -y tigervnc-server #安装VNC服务端,一般执行此句即可yum groupinstall -y 'X Window System' 'Desk ...

  2. vuex的学习例子

    最近在学习vuejs,一直有听说vuex,用来实现多组件共享的一种状态管理模式,但是网上都说,不要为了用vuex而用vuex,大概意思就是尽量少用vuex,一些小项目可以用bus来实现组件之间的传值问 ...

  3. Ubuntu 下matlab 查看memory函数

    %Copyright (c) 2012, Michael Hirsch%All rights reserved.%%Redistribution and use in source and binar ...

  4. js 求select option 的值和对应option的内容

    <select onChange="aa(this)" name="a"> <option value="a">1& ...

  5. mysql 下载资源地址

    http://mirror.neu.edu.cn/mysql/Downloads/MySQL-5.6/

  6. 分布式锁与实现(一)基于Redis实现

    目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题.分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency).可用性( ...

  7. 二叉排序树,Binary_Sort_Tree,C++完整实现

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  8. :适配器模式:Adapter

    #ifndef __ADAPTER_H__ #define __ADAPTER_H__ #include <iostream> using namespace std; class Duc ...

  9. Linux如何从零开始搭建nfs服务器(centOS6)

    Server端 1.打印系统版本 cat /etc/redhat-release uname -r uname -m 2.检查是否安装NFS服务 rpm -aq nfs-utils rpcbind L ...

  10. CPU的硬件结构和汇编语言

    (已更正) 这个问题包括CPU的硬件结构和汇编语言的范畴. 这里梳理一下. 首先, 题主"李建国"自问自答的部分说的是正确的, CPU的指令集是软件与CPU这两个层级之间的接口, ...