![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二分搜索树
萌萌,站起来
这个作者很懒,什么都没留下…
展开
-
玩转 二分搜索树 lee450 删除二分搜索树节点
给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点;如果找到了,删除它。说明: 要求算法时间复杂度为 O(h),h 为树的高度。示例:root = [5,3,6,2,4,null,7]key = 35/ ...原创 2020-02-06 22:05:47 · 103 阅读 · 0 评论 -
玩转 二分搜索树 lee235 二分搜索树最近公共祖先 、lee98 验证二分搜索树 在琢磨琢磨3.29
什么是二分搜索树常见操作都可以O(logn)实现lee235 两个节点最近公共祖先给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,...原创 2020-02-06 20:28:34 · 140 阅读 · 1 评论 -
new 二叉搜索树与双向链表 递归没看懂
题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。思路一 非递归 栈1.核心是中序遍历的非递归算法。2.修改当前遍历节点与前一遍历节点的指针指向。import java.util.*;public class Solution { public TreeNode Convert(TreeNode pRoo...原创 2019-11-02 15:15:13 · 80 阅读 · 0 评论 -
二叉树搜索树的第k个节点 中序遍历递归不太懂
给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。思路 中序遍历 有序 非递归思路:二叉搜索树按照中序遍历的顺序打印出来正好就是排序好的顺序。所以,按照中序遍历顺序找到第k个结点就是结果。import java.util.*;public class Solution { TreeNode Kth...原创 2019-10-29 11:17:20 · 363 阅读 · 0 评论 -
new 二叉树的双向链表 未完
标题输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。原创 2019-10-18 14:40:56 · 77 阅读 · 0 评论 -
new 二分搜索树的后序遍历
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。思路结合图中分析:一棵 BST :左孩子 < 根结点 < 右孩子一棵 BST 的左子树或者右子树都是 BST后序遍历是,左右根:[3, 4, 9, 5, 12, 11, 10],结合图再从左往右分析后序序列,分析子树,可以发现:[3, 4...原创 2019-10-16 17:46:36 · 143 阅读 · 0 评论 -
红黑树
2-3树5插入颜色反转//颜色翻转 private void flipColors(Node node) { node.color=RED; node.left.color=BLACK; node.right.color=BLACK; }//右旋转 private Node rightRotate(Node node) { Node x=n...原创 2019-10-09 14:07:40 · 121 阅读 · 0 评论 -
映射Map的底层方法实现
映射字典public interface Map<K,V> { void add(K key,V value); V remove(K key); boolean contains(K key); V get(K key); void set(K key,V newValue); int getSize(); boolean ...原创 2019-10-05 21:53:39 · 201 阅读 · 0 评论 -
集合Set的两个底层实现方法
集合方法每个元素只能出现一次典型应用:客户统计、词汇量统计 void add(E e); void remove(E e); boolean contains(E e); int getSize(); boolean isEmpty();}BST、LinkedList都属于动态结构基于链表的集合实现public class LinkedList...原创 2019-10-05 21:11:07 · 353 阅读 · 0 评论 -
二分搜索树删除
寻找二分搜索树中最小的元素//寻找二分搜索树最小元素public E minimum() { if(size==0) throw new IllegalArgumentException("BST is empty"); return minimum(root).e;}//返回以node为根的二分搜索树最小键值所在节点private Node minimum(Node node)...原创 2019-10-05 16:10:03 · 145 阅读 · 1 评论 -
二分搜索树遍历
二分搜索树遍历前序遍历//二分搜索树的前序遍历public void preOrder() { preOrder(root);}//前序遍历以node为根的二分搜索树,递归算法private void preOrder(Node node) { if(node==null) return; if(node!=null) { System.out.println(node....原创 2019-10-05 13:23:27 · 133 阅读 · 0 评论 -
算法6 树结构
6.1树结构二分搜索树(Bianary Search Tree)平衡二叉树:AVL、红黑树堆、并查集线段树、Trie(字典树、前缀树)二叉树天然递归结构二分搜索树Binary Search Tree1,是二叉树2,每个节点值:大于左子树所有节点,小于右字数所有节点3,存储的元素必须有可比较性构建代码public class BST <E extends Compara...原创 2019-10-05 12:10:07 · 93 阅读 · 0 评论