首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

数据结构(二叉查找树-插入节点)

二叉查找树(Binary Search Tree),又被称为二叉搜索树,它是特殊的二叉树,左子树的节点值小于右子树的节点值。...定义二叉查找树 定义二叉树BSTree,它保护了二叉树的根节点BSTNode类型的mRoot,定义内部类BSTNode 包含二叉树的几个基本信息: key——关键字用来对二叉查找树的节点进行排序 left...对象,构造参数:T对象 定义重载方法insert(BSTree bsTree,BSTNode bstNode)方法,参数:BSTree树对象,BSTNode节点对象 插入节点,分两步, 1.找到节点的父节点位置...bsTree, BSTNode bstNode) { BSTNode parent = null; BSTNode x = bsTree.mRoot; // 查找...= null) insert(this, z); } /* * 打印"二叉查找树" * * key -- 节点的键值

57320
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    二叉查找树二叉查找树

    二叉查找树 二叉查找树是一种特殊的二叉树,该数据结构的核心性质是: 对于树中的每个节点X,它的左子树中所有关键字值小于X的关键字值,而它的右子树中所有关键字值大于X的关键字值 二叉查找树ADT MakeEmpty...:清空二叉查找树 Find:给出关键字值,返回该关键字值的节点指针 FindMin与FindMax:返回最小关键字值和最大关键字值的节点指针 Insert:插入一个给定关键字值的节点 Delete:删除一个指定关键字值的节点...= nil { t.right_point.MakeEmpty() } t.num = 0 t.data = tree_data{} } 查找方法 查找时: 当待查标号大于本节点标号时...else { return t.left_point.Find(num) } } else { return t, nil } } 查找最小值...,则: 当本节点没有子树(是树叶)时,直接将母节点指向该节点指针置nil(删除该节点) 当本节点仅有一个子树时,直接将本节点替换为子节点 当本节点有两个子树时,找到右节点的最小节点a,将本节点数据与标号替换为

    930110

    使用JS 实现二叉查找树(Binary Search Tree)

    二叉查找树,也称二叉搜索树、有序二叉树(英语:ordered binary tree)是指一棵空树或者具有下列性质的二叉树: 任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 任意节点的右子树不空...,则右子树上所有结点的值均大于它的根结点的值; 任意节点的左、右子树也分别为二叉查找树; 没有键值相等的节点。...二叉查找树相比于其他数据结构的优势在于查找、插入的时间复杂度较低。为O(log n)。二叉查找树是基础性数据结构,用于构建更为抽象的数据结构,如集合、multiset、关联数组等。 ?...data; this.left = left; this.right = right; } } 树是有节点构成,由根节点逐渐延生到各个子节点,因此它具备基本的结构就是具备一个根节点...,具备添加,查找和删除节点的方法. class BinarySearchTree { constructor() { this.root = null; }

    1.2K20

    JavaScript快速查找节点

    1 属性节点 元素节点(HTML标签)的属性,如id,class,name等 2 文本节点 元素节点或属性节点中的文本内容 3 注释节点 便是文档的注释,形式如 8 文档节点 表示整个文档(Dom树的根节点,即document) 9  关于节点的名称,不同类型的节点对应不同的名称 节点类型 节点名称 元素节点 HTML的名称...(节点值)分别返回节点的类型(比如元素节点返回1,属性节点返回2)、节点名称以及节点值; JS获取兄弟节点的两种方法  方法一:通过父元素的子元素先找到含自己在内的“兄弟元素”,然后在剔除自己 1 function...== elem) a.push(b[i]); 6 } 7 return a; 8 } 方法二:jQuery中实现方法,先通过查找元素的第一个子元素,然后在不断往下找下一个紧邻元素,判断并剔除自己...== elem) { 6 r.push(n); 7 } 8 } 9 return r; 10 } 很显然通过这种方法查找特定节点的兄弟元素

    2.2K110

    JS数据结构之二叉查找树(BST)

    介绍 二叉查找树(Binary Search Tree, BST)也叫做有序二叉树。对于树中的每个节点,都要满足左子树的所有项比它小,右子树所有项比它大。...这个问题需要平衡二叉树来解决,本文只讨论普通的二叉查找树。 实现 逐个函数来分析。...查找 考虑BST的性质:对于任意一个节点,左子树的所有项都比它小,右子树的所有项都比它大。所以,我们可以写出下列代码: function contains(node, val) { if (!...如果要查找的值比当前节点的值小,就去左子树查找;如果大,就去右子树查找。 既不大于也不小于,那就是相等,返回true。 后续的算法与这些步骤都是类似的。...判断当前节点是否为空,如果是的话就返回一个新的节点。 如果要插入的值比当前节点的值小,就去左子树插入;如果大,就去右子树插入。

    57430

    树形查找(二叉查找树)

    介绍 我们在平时的查找算法中,最多的往往是顺序查找和折半查找,而对树形查找往往一知半解,本文主要介绍二叉排序树的创建,插入和查找。...树的定义 树是一种数据结构,它是由n(n≥0)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。...而如果一棵树他的每个节点最多含有两个子树的树称为二叉树。...BST_inser(T,a[i]); i++; }} 树形查找 二叉排序树的查找其实非常简单,就是将值k从排序树的根节点,依次往下差,当k大于当前比对的T节点值的时候,查找此节点T的右孩子...,当k小于当前比对的T节点值的时候,查找此节点T的左孩子,当等于此节点的值的时候,返回此节点。

    46020

    浅谈多路查找树(B树)

    1、序言 曾今我不知道多叉树有上面用,所以对于多叉树并没有过多的关注,或者说,基本没关注。 直到我了解到了多路查找树(B树),我知道,是我浅薄了。 先不说那些高深莫测的内容,我们就通俗的聊聊。...2、2-3树 这是一个简单的多路查找树,学新东西嘛,自然从最简单的开始。什么是多路查找树?和二叉树做个比较可能会比较直观:二叉树,你可以叫它二路查找树。明白了吧。 那么2-3树是一颗怎样的树?...3、B树 B树是一种平衡的多路查找树。 节点最大的孩子的数量的树叫做m阶B数。 所以2-3树就是3阶B树,二叉树就是2阶B树。 B树有如下性质: 如果根节点不是叶节点,那么B树至少有两叉。...在B树上的查找过程是一个顺指针查找节点和在节点中查找关键字的交叉过程。 关于B树的插入删除,和2-3树一样,只不过阶数可能会大了些。...B树查找的时间复杂度:O(log n). 下次再深挖的时候我一定带上B+树的!!!

    87020

    字典树Trie(单词查找树)详解

    字典树 1. 背景和定义 2. 功能 3. 代码实现 1. 背景和定义   算法导论中,Trie叫做“基数树”。其应用范围不仅和字符串有关,本质上其实是个N叉树。   ...在N叉树上,如果共父节点的N个子节点是有序的字符序列,构造出来就很像字典树了。 2. 功能   字典树的功能是对很多串进行压缩,压缩方法是合并这些字符串的相同前缀。   ...具体而言,就是字典树的每个节点都代表一个字符,用从根节点到叶子节点的路径来表示一个字符串。   这样做就压缩了所有模式串,并将大量前缀进行了合并,从而节省了时间。 3....代码实现 struct TrieNode { TrieNode *sons[26]; int flag = 0; // flag == 1表示有该单词(叶子节点) TrieNode

    68420

    图解基数树,给查找加点树

    : 因为基数树是对字典树的压缩,因此基本操作和字典树基本一致,只是多了节点的合并和分裂操作。...对基数树和字典树插入相同的字符串【abce】,当基数树的某一个节点需要分叉时,则对该节点进行分裂后再加入新节点。 对基数树和字典树插入相同的字符串【aecb】。...删除值 基于上文中的树,对基数树和字典树删除相同的字符串【abcd】,可以看到因为节点(bc)的分叉消失,因此和子节点合并为(bce)。...对基数树和字典树删除相同的字符串【abce】,同理,节点(a)和其子节点(ec)合并为(aec)。 对基数树和字典树删除相同的字符串【aecb】。...查找 因为基数树的本质依然属于字典树,因此在查找使用上和字典树并无不同,只是因为基数树通过压缩,使得在前缀有一定规律的串在树中的深度更低,因此查找效率也较高。

    1K20

    查找算法之顺序查找,折半查找,二叉查找树

    图5 使用二叉排序树查找关键字   二叉排序树中查找某关键字时,查找过程类似于次优二叉树,在二叉排序树不为空树的前提下,首先将被查找值同树的根结点进行比较,会有 3 种不同的结果: 如果相等,查找成功;...二叉排序树中删除关键字   在查找过程中,如果在使用二叉排序树表示的动态查找表中删除某个数据元素时,需要在成功删除该结点的同时,依旧使这棵树为二叉排序树。   ...#include #define TRUE 1 #define FALSE 0 #define ElemType int #define KeyType int /* 二叉排序树的节点结构定义...s = (*p)->lchild; //遍历,找到结点 p 的直接前驱 while (s->rchild) { //指向p节点左子树最右边节点的前一个...q 此时指向的是叶子节点的父节点。 q != *p二者不等说明有右子树 if (q !

    1.6K30
    领券