二叉排序树插入C语言版 递归步骤理解

 1 //二叉排序树 插入 (纯C语言实现)
 2 BTNode * BSTInsert2(BTNode *bt,int key){
 3                                                       //为什么纯C语言实现中
 4     if(bt==NULL){                                     //要写成 bt->rchild=BSTInsert2(bt->lchild,key);
 5         bt = (BTNode*)malloc(sizeof(BTNode));         //而不是直接 BSTInsert2(bt->lchild,key);或者是
 6         bt->lchild =bt ->rchild =NULL;                // bt= BSTInsert2(bt->lchild,key);  ???????
 7         bt->data = key;
 8     }else if(bt->data>key)
 9         bt->lchild=BSTInsert2(bt->lchild,key);        //函数中的形参中(BTNode *bt,int key)的BTNode *bt
10     else if(bt->data<key)                             //每次调用都是复制,可以理解为是一个新的树
11         bt->rchild=BSTInsert2(bt->rchild,key);        //没有改变外界的实参bt
12     return bt;
13 }

原文地址:https://www.cnblogs.com/EarlDoss/p/9744827.html

时间: 2024-11-11 02:19:04

二叉排序树插入C语言版 递归步骤理解的相关文章

《数据结构-C语言版》(严蔚敏,吴伟民版)课本源码+习题集解析使用说明

先附上文档归类目录: 课本源码合辑  链接??? <数据结构>课本源码合辑 习题集全解析  链接??? <数据结构题集>习题解析合辑 博主有话说: 01.自学编程,难免思路阻塞,所以从今天起,我(StrayedKing)决定在本博客陆续更新严蔚敏,吴伟民版<数据结构-C语言版>各章节的课本源码和配套习题集答案解析,目的是为了整理数据结构中的知识点,并与网友交流意见,集思广益,共同进步.        ★注★ 左侧随笔分类下用两个栏目:<课本源码>.<习

排序算法总结(C语言版)

1.    插入排序 1.1     直接插入排序 1.2     Shell排序 2.    交换排序 2.1     冒泡排序 2.2     快速排序 3.    选择排序 3.1     直接选择排序 3.2     堆排序 4.    归并排序 4.1     二路归并排序 4.2     自然合并排序 5.    分布排序 5.1     基数排序 1.插入排序 1.1      直接插入排序 将已排好序的部分num[0]~num[i]后的一个元素num[i+1]插入到之前已排好序的

双向链表(c语言版)

为了得到一个简洁的C语言实现的双向链表,本篇参照数据结构书籍对双向链表的做了一些修改,内容有: 1.合并分离的头文件和实现文件,认识更为直观: 2.修改函数名和变量名,更贴近自身的理解: 3.删除了返回首节点.尾节点等功能更为单一的函数,留下其主干. 实现思路: 1.定义一个双向链表 2.进行初始化工作:调用initList(),构造一个空的双向链表 3.执行增删改查等操作(节点操作) *插入时注意:封装成节点 1 /*双向链表实现代码*/ 2 #include<malloc.h> 3 #in

基于BP神经网络的简单字符识别算法自小结(C语言版)

本文均属自己阅读源码的点滴总结,转账请注明出处谢谢. 欢迎和大家交流.qq:1037701636 email:[email protected] 写在前面的闲话: 自我感觉自己应该不是一个很擅长学习算法的人,过去的一个月时间里因为需要去接触了BP神经网络.在此之前一直都认为算法界的神经网络.蚁群算法.鲁棒控制什么的都是特别高大上的东西,自己也就听听好了,未曾去触碰与了解过.这次和BP神经网络的邂逅,让我初步掌握到,理解透彻算法的基本原理与公式,转为计算机所能识别的代码流,这应该就是所谓的数学和计

数据结构c语言版串的操作

#include<stdio.h> #include<malloc.h> #include<string.h> //定义字符串的结构体 typedef struct { char *str;//字符串 int maxLength;//最大可以存放字符的长度 int length;//目前的字符长度 }DString; //1.初始化操作 //初始化操作用来建立和存储串的动态数组空间以及给相关的数据域赋值 void Initiate(DString *s,int max,

C语言用递归求斐波那契数,让你发现递归的缺陷和效率瓶颈

递归是一种强有力的技巧,但和其他技巧一样,它也可能被误用. 一般需要递归解决的问题有两个特点: 存在限制条件,当符合这个条件时递归便不再继续: 每次递归调用之后越来越接近这个限制条件. 递归使用最常见的一个例子就是求阶乘,具体描述和代码请看这里:C语言递归和迭代法求阶乘 但是,递归函数调用将涉及一些运行时开销--参数必须压到堆栈中,为局部变量分配内存空间(所有递归均如此,并非特指求阶乘这个例子),寄存器的值必须保存等.当递归函数的每次调用返回时,上述这些操作必须还原,恢复成原来的样子.所以, 基

顺序栈的栈基本操作(C语言版)

由于现在只学了C语言所以就写这个C语言版的栈的基本操作 这里说一下 :网上和书上都有这种写法 int InitStack(SqStack &p) &p是取地址  但是这种用法好像C并不支持 ,C++才支持,所以用 C语言写就需要使用指针 代码如下: 1 #include <stdio.h> 2 #include <stdlib.h> 3 #define STACK_INIT_SIZE 100//储存空间初始分配量 4 #define STACKINCREMENT 1

入门:《教孩子学编程 Python语言版》中英文PDF+代码

工作需要看过这本书,书中以turtle绘图展开,吸引学生兴趣,引入点非常好,安利也比较有意思好理解,但是有部分案例不太符合中国情况,还需要再改一改,总之是一本学习编程的好书 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.这门强大的语言如今在大学和Google.IBM等大型技术公司广泛使用.<教孩子学编程 Python语言版>是一本父母和老师教孩子使用Python进行基础程序设计和解决问题的入门图书.书通过科学合理的结构.通俗易懂的文字.活泼有趣的图示,帮助孩子学习计算机的

Python入门《父与子的编程之旅第2版》+《教孩子学编程Python语言版》

无论有无编程基础,无论大人小孩,学习编程语言,建议首选Python.初次接触Python,或者想快速应用Python完成一些任务,建议学习<父与子的编程之旅第2版>电子书和<教孩子学编程Python语言版>电子书. 对于孩子们来说,纯粹的数学计算并不是那么的有趣:而能够做出一个看得到的东西,则是一件很有成就感的事情.<父与子的编程之旅第2版>电子书在七分之一的篇幅处即引入了GUI的概念和实际例子,在四分之一的篇幅处即告知孩子们“游戏时间到了”,让孩子们可以自己敲击代码来