首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【C++】手写BST

    (解决链接的问题) 1....这个时候需要比较一下parent的key和插入结点val的大小,val大那就插入到parent的右指针,val小那就插入到parent的左指针。 3....(解决链接的问题) 1....无论是递归插入结点还是非递归,我们都需要处理结点和父节点链接的问题,所以有一个比较好的思路就是,在递归查找插入位置的过程中,我们并不是找到那个位置,让父节点去链接那个位置,而是判断遍历到的结点的左或右是否为空...而对于交换法删除的情景来说,我们可以利用递归将问题进行转换,虽然交换之后整体不再满足搜索树,但删除结点的右子树依旧满足搜索树,所以我们只要递归删除其右子树就可以,将交换法删除的问题通过递归右子树再次转换为直接删除的问题

    7800

    Binary Search Trees(BST)

    BST的性质 BST的形状为 image.png 每个BST中的节点x,存在一个key,一个指向父节点的parent指针,同时还有一个左子树和右子树 root的parent不存在 左子树值y与父节点...x满足 key(y) <= key(x),右子树z满足 key(x) <=key(z) 插入实现机制 假设元素的插入顺序为30,40,17,20,14 刚开始的时候没有元素,插入新的元素 image.png...然后插入第二个元素40,它比30要大,置为它的右节点 image.png 插入第三个元素17,比30要小,置为它的左节点 image.png 然后是20,比30小,找到做子树,左子树的节点值为17...,再次比较 image.png 最后一次元素再次插入,得到最终的BST结构 image.png def insert(self,z): x = self.root y=None # x's parent...y.right = z else: y.left = z 复制代码 它的耗时为O(lgn) 找到后继节点 后继节点即从值上来讲,找到比要找的元素要大最接近的值,根据BST的性质,它肯定在右子树上

    38430
    领券