美文网首页
实现二叉查找树

实现二叉查找树

作者: drummercode | 来源:发表于2019-01-25 16:14 被阅读0次
    const arr = ["宇智波鼬", "卡卡西", "斑", "鸣人", "佐助", "小樱", "我爱罗", "李洛克", "凯", "久保带人"].map((data, i) => {
        const index = [49, 23, 56, 102, 44, 32, 20, 84, 2, 103]
        return {
            key: index[i],
            data
        }
    })
    let btree = ""
    // 添加树
    const addBtree = (root, node) => {
        if (root.key > node.key) {
            if (!root.left) {
                root.left = node
            } else {
                addBtree(root.left, node)
            }
        } else {
            if (!root.right) {
                root.right = node
            } else {
                addBtree(root.right, node)
            }
        }
    }
    // 搜索树
    const searchBtree = (root, key) => {
        if (root.left.key == key || root.right.key == key) {
            return root
        } else {
            return root.key > key ? searchBtree(root.left, key) :searchBtree(root.right, key)
        }
    }
    // 删除树
    const deleteBtree = (root, key) => {
        const parentNode = searchBtree(root, key)
        const node = parentNode.left.key == key ? parentNode.left : parentNode.right
        // 如果删除的节点没有右孩子,那么就选择它的左孩子来代替原来的节点
        // 如果被删除节点的右孩子没有左孩子,那么这个右孩子被用来替换被删除节点
        // 如果被删除节点的右孩子有左孩子,就需要用被删除节点右孩子的左子树中的最下面的节点来替换它
    }
    // 生成树
    arr.forEach((data) => {
        const node = {
            left: "",
            right: "",
            ...data
        }
        if (!btree) {
            btree = node
        } else {
            addBtree(btree, node)
        }
    })
    deleteBtree(btree, 20)

相关文章

  • 二叉树 堆 2019-04-17

    二叉树 实现一个二叉查找树,并且支持插入、删除、查找操作 实现查找二叉查找树中某个节点的后继、前驱节点 实现二叉树...

  • 7天练|Day5:二叉树和堆

    关于二叉树和堆的7个必知必会的代码实现二叉树实现一个二叉查找树,并且支持插入、删除、查找操作实现查找二叉查找树中某...

  • 二叉查找树

    1)二叉查找树是什么?2)二叉查找树的插入、删除、查找?3)Go代码实现 一、二叉查找树是什么?二叉查找树(BST...

  • 二叉查找树的查找和排序方法的实现

    定义二叉树 二叉查找树的查找和排序方法的实现

  • 6. 二叉树创建-查找

    1. 递归方式实现二叉树的构建2. 树、二叉树、二叉查找树3. 二叉树排序树的理解4. 二叉查找树5. 二叉树的查找

  • 平衡二叉查找树-AVL树代码实现

    平衡二叉查找树-AVL树代码实现 什么是“平衡二叉查找树”? 平衡二叉树的严格定义是这样的:二叉树中任意一个节点的...

  • 树 - 二叉查找树

    二叉查找树也叫二叉搜索树,是二叉树中最常见的一种类型。顾名思义,二叉查找树是为了实现快速查找而生的,当然,它不仅仅...

  • 二叉查找树

    二叉查找树是二叉树中最常用的一种类型,也叫二叉搜索树。顾名思义,二叉查找树是为了实现快速查找而生的。不过,它不仅仅...

  • 极客时间数据结构与算法之美笔记25~26

    二叉树到二叉查找树,是为了查找数据的效率接近logN。 二叉查找树到平衡二叉查找树,是为了防止二叉查找树沦为链表。...

  • 红黑树

    红黑树的本质就是一棵二叉查找树,所以先从二叉查找树来了解起。 二叉查找树 二叉查找树又称有序二叉树,具有以下特性:...

网友评论

      本文标题:实现二叉查找树

      本文链接:https://www.haomeiwen.com/subject/wlnmjqtx.html