`

数据结构之查找(四)查询树的实现递归和非递归

 
阅读更多

一、查询树

              插入删除看这两篇关于inset和delete

              查询树的实现:http://xiaozhou09.iteye.com/blog/1958907

       平衡查询树的实现:http://xiaozhou09.iteye.com/blog/1961149

 

二、添加数据的实现

 

先说插入:

            我在查询树中的实现是一个非递归的过程

            =》每次得到要查询的父节点,判断条件就是要插入的位置子节点是个NULL

            =》然后比较,实例化,插入

 

---------------------------------------------------------------------------------------------------------

           平衡二叉树中要维护插入后路径的平衡因子,递归很好的处理这个问题。

           =》递归找到位置插入=》结束边界条件是到NULL

          =》重新得到平衡因子检查

          =》左边插入

                 =》当前值跟左孩子比较

                 =》LL LR

          =》右边插入

                =》当前值跟右孩子比较

                =》RR RL

 

 再说删除:

                在查询树中删除我是这样操作的

                =》得到删除的节点

                =》判断是否是叶子节点

                =》判断是否是只有左子树

                =》判断是否是只有右子树

                =》如果都有的话

                      =》可以找到左边最大的值代替然后删除这个节点

                      =》也可以找到右边最小的值代替然后杀出这个节点

----------------------------------------------------------------------------------------------------------

                 在平衡树种的删除参考的是网络中的处理方式

                 =》判断是否有右子树

                       =》没有把左子树赋值上去(可以包含了只有左子树和叶子节点)

                  =》右子树存在

                        =》找到最小的值给它赋值替换,然后删除(左右都有可以用,只有右子树也可以,叶子)

                =>删除完毕了然后回去重新判断下平衡因子

                 =》平衡因子只有可能+1 -1然后不平衡

                 =》平衡因子=2 =》必定+1=》删除了右边=》左边的值大了

                       =》判断左边是LL还是LR

                       =》此节点的左子树1,0 or -1

                 =》平衡因子=-2=》必定-1=》删除了左边=》右边值大了

                       =》判断右边是RR还是RL

                       =>=》此节点的右子树-1,0 or 1

分享到:
评论

相关推荐

    【数据结构】——搜索二叉树的插入,查找和删除(递归&非递归)

    【数据结构】——搜索二叉树的插入,查找和删除(递归&非递归) 在计算机科学中,数据结构是存储和组织数据的方式,它直接影响到数据的处理效率。搜索二叉树(BST,Binary Search Tree)是一种特殊类型的数据结构,...

    用递归实现C#树形结构

    在计算机科学中,树是由节点(也称为顶点)和边组成的非线性数据结构。每个节点可以有零个或多个子节点,而顶部的节点称为根节点。没有父节点的节点称为叶节点。树的深度表示从根节点到最远叶节点的最长路径上的边的...

    递归和非递归建立树和树的前,中,后,分层遍历

    2. **非递归建立树**:非递归建立树通常使用栈或队列等数据结构。首先,创建根节点,然后将子节点的值依次入栈(或入队),直到没有更多节点。每次出栈(或出队)一个值,就创建一个新节点,并将其作为上一次出栈...

    分别用递归和非递归方法实现二分查找算法 的完整程序

    分别用递归和非递归方法实现二分查找算法 的完整程序,indexof()返回的是循环实现的二分法查找,getindex()实现的是递归算法实现的二分法查找。

    数据结构迷宫算法(递归和非递归)

    迷宫问题是一种典型的数据结构问题,它涉及到路径查找和搜索算法。在这个话题中,我们将深入探讨递归和非递归算法在解决迷宫问题中的应用。 首先,我们要理解迷宫问题的基本概念。一个迷宫可以被抽象为一个二维网格...

    数据结构之平衡二叉树的非递归实现

    在IT领域,数据结构是计算机科学的基础,而平衡二叉树是其中的一种重要结构,它在数据查询、插入和删除操作中保持了较高的效率。本文将深入探讨如何使用C语言实现平衡二叉树的非递归版本,以提高程序执行性能。 ...

    快速选择非递归与递归算法实现

    快速选择算法是基于快速排序的一种...通过合理地选取基准和适当的数据结构,快速选择算法可以在大数据集上提供高效的k-th最小元素查找服务。在Java中的`QuickSelect.java`文件中,应该包含了这些算法的具体实现细节。

    折半查找的递归与非递归算法

    非递归实现折半查找通常使用循环结构,如 `while` 或 `do-while`。基本步骤与递归类似,但不使用函数调用自身,而是通过不断更新起始索引和结束索引来控制搜索范围: 1. 初始化中间索引,计算初始的中间值。 2. ...

    非线性数据结构的实现与应用(非递归).pdf

    在本份文档中,我们关注的焦点是树形数据结构的实现,以及其在非递归方式下的应用。树是一种非线性数据结构,它可以用来模拟具有层级关系的数据集,它通常由一系列节点构成,每个节点都有零个或多个子节点,而根节点...

    插入、查找和删除函数用非递归的方式实现

    以上就是插入、查找和删除操作非递归实现的基本原理和常见数据结构中的应用。在实际编程中,应考虑数据结构的特点和具体场景,选择最适合的实现方式。同时,优化策略如哈希表、二分查找等可以显著提高效率。

    非递归折半查找

    非递归查找的简单C语言程序,供初学者参考一下,哈哈。

    递归-----动态树实现递归

    递归在处理树结构数据时尤其有效,因为树本身就是一种自相似的数据结构,非常适合使用递归来遍历、查找或修改。标题“递归-----动态树实现递归”暗示我们将探讨如何利用递归方法来操作动态树。 首先,让我们理解...

    C语言实现二叉树的前序遍历(非递归)

    非递归的前序遍历实现主要依赖于栈的数据结构。以下是对给定代码的详细解析: 1. **定义结构体**:`struct BiTNode` 定义了二叉树的节点结构,包含数据域`data`,以及指向左右子节点的指针`lchild`和`rchild`。 2....

    java实现的二叉树的递归和非递归遍历

    在Java编程语言中,二叉树是一种非常重要的数据结构,它由节点构成,每个节点包含一个值,并且可能有两个子节点:左子节点和右子节点。二叉树的遍历是访问每个节点的过程,通常分为三种主要方式:前序遍历、中序遍历...

    数据结构树 图 查找 排序C语言实现

    在“数据结构树 图 查找 排序C语言实现”这个主题中,我们将深入探讨四种核心概念:树、图、查找算法以及排序算法,并通过C语言来实现这些概念。 1. **树数据结构**:树是一种非线性的数据结构,由节点(或称为顶点...

    数据结构实验六.docx

    "数据结构实验六:递归实验设计与实现" 数据结构是一门重要的计算机科学课程,实验六是该课程的重要组成部分。本实验的目的是让学生掌握递归算法设计和递归到非递归的转换方法,并了解单链表递归算法设计方法。 一...

    C#数据结构 排序 栈和栈的应用 树和二叉树 递归 例子

    本文将深入探讨C#中的数据结构,特别是排序、栈与栈的应用、树和二叉树以及递归等核心概念,并通过实例来加深理解。 首先,我们来看排序。排序是计算机科学中最基本的操作之一,它涉及到对一组数据按照特定顺序进行...

    数据结构 利用递归法进行表的查找

    在计算机科学领域,数据结构是组织和存储...通过理解这些基本概念,并结合实际的代码实现(如压缩包中的"数据结构 查找表 递归.doc"文件),你可以深入学习并熟练运用递归查找,从而提升你的编程技能和问题解决能力。

    二叉树的遍历(递归+非递归 c语言版)

    本篇文章将详细介绍这三种遍历方法,并通过C语言实现递归和非递归版本。 1. 前序遍历(根-左-右) 在前序遍历中,我们首先访问根节点,然后遍历左子树,最后遍历右子树。递归实现非常直观,代码如下: ```c void...

    数据结构实验报告-查找.doc

    本章实验报告主要围绕数据结构中的查找算法展开,通过三个实验题目,分别对线性表的顺序查找、折半查找(递归实现)和折半查找(非递归实现)进行了实验和分析。 一、线性表的顺序查找 本实验的主要目的是实现...

Global site tag (gtag.js) - Google Analytics