![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 79
肖爱Kun
分享日常学习
展开
-
二叉树递归删除节点操作超详细图解说明。
删除节点。1)如果需要删除的节点有左子树(不管有没有右子树),其方法是将左子树中最大值替换掉该节点。第一步:通过递归寻找到需要删除的节点。第二步:找到删除的那个节点的左子树的最大值。第三步:将这个最大值替换需要删除的节点。第四步:通过调用删除函数,递归地去删除这个最大值。(不能直接删除,需要递归删除,因为这个节点虽然肯定没有右子树(因为如果有右子树,该节点就不是最大的),但是有可能有左子树)2)如果需要删除的节点只有右子树,其方法就是把右子树中最小值替换该节点。第一步:通过递归寻找到需要原创 2022-03-09 17:08:56 · 3939 阅读 · 2 评论 -
二叉树利用回调函数插入数据操作
二叉树插入数据操作struct node *insert_node(struct node *new,struct node *root){ if(root==NULL) { return new; } if(new->data > root->data) { root->rchild = insert_node(new,root->rchild); } else if(new->...原创 2022-03-07 15:22:44 · 201 阅读 · 0 评论 -
第二十五篇,二叉树的相关操作。
一、二叉树。1、为什么要学习二叉树?前面我们都已经学习过链表,大家都知道,如果我们需要检索出来一个数据,有可能检索一次,就可以找到数据,有可能检索到最后一个节点才能找到数据,这就是链表的特点。也就是说,寻找一条长度为N个节点的链表,搜索次数处于1~N-1(头节点无效),二叉树的出现,就是为了减少检索数据时次数。2、什么是二叉树?二叉树也是一种存储结构,也就是说跟链表一样,都是用来存储数据的,但是链表是线性规则结构,而二叉树是非线性的存储结构。二叉树有一个根节点作为起点,这个根节点也是用来存放数据。原创 2022-03-04 09:09:28 · 293 阅读 · 0 评论 -
第二十四篇,内核链表,链式栈,队列的相关操作。
一、链表的种类。1、传统链表一共有4种,分别是单向/单向循环/双向/双向循环链表。因为这些链表增删改查过程都是用户自己设计的,所以称之为传统链表。2、非传统链表只有1种,就是内核链表。因为内核链表的增删改查已经写好了,用户只需要直接调用即可。优点:用户只需要直接调用即可,不需要关心实现过程。缺点:用户不能修改函数接口。二、什么是内核链表?1、内核链表本身就是一条双向循环链表。2、内核链表头节点依然是无效。3、内核链表数据域是由用户自己设计,指针域虽然也是跟双向循环链表一样,有一个前驱原创 2022-03-02 17:01:08 · 247 阅读 · 0 评论 -
第二十三篇,单向双向循环链表模型。
一、传统链表模型?详细参考:传统链表模型.jpg单向链表: 节点中只有一个指针,最后一个节点指针域指向NULL。单向循环链表:节点中只有一个指针,最后一个节点指针域指向头节点。双向链表: 节点中有两个指针,头节点往前指向NULL,最后一个节点往后指向NULL。双向循环链表:节点中有两个指针,头节点往前指向最后一个节点,最后一个节点往后指向头节点。二、单向循环链表。1、经过分析之后,单向循环链表只需要一个指针即可,所以节点模型与单向链表一致。struct list_node{...原创 2022-03-01 08:40:31 · 367 阅读 · 0 评论 -
第二十二篇,数据结构(起始篇)—单向链表。
一、数据结构学习大纲。1、数组与链表之间存储区别。2、链表模型、使用场景。3、链表种类?传统链表 --> 单向链表、单向循环链表、双向链表、双向循环链表。非传统链表 --> 内核链表4、栈/队列5、二叉树无论学习什么数据结构,其实都是在学习该结构的增删改查。二、回顾学习过一些数据结构 -- 增删改查。变量: int x = 0;增:x = 10;删:x = 0;改:x = 20查:printf("%d\n",x);数组:int x[3] = {0};增..原创 2022-02-28 09:26:03 · 675 阅读 · 0 评论