随笔分类 - BST
摘要:find: remove 分析:假设当前node 为root 1. if value < root.val, 要被删除的节点在左子树,往左子树递归,并把操作结束后的返回值作为新的root.left 2. if value > root.val, 要被删除的节点在右子树,往右子树递归, 并把操作结束后
阅读全文
摘要:这道题是要求恢复一颗有两个元素调换错了的二叉查找树。一开始拿到可能会觉得比较复杂,其实观察出规律了就比较简单。主要还是利用二叉查找树的主要性质,就是中序遍历是有序的性质。那么如果其中有元素被调换了,意味着中序遍历中必然出现违背有序的情况。那么会出现几次呢?有两种情况,如果是中序遍历相邻的两个元素被调
阅读全文
摘要:方法一:分治法 TLE 最基本是得先清楚BST定义. 每个节点的所有左子节点值都比该节点小, 每个节点的所有右子节点值都比该节点小. 知道定义后在构建BST时可逐次选择value做根节点. 利用递归计算根节点左子树可能形状数目, 与根节点右子树可能形状数目, 最后将两个可能形状数目相乘得到所有可能的
阅读全文
摘要:bst: 加count记住遍历过得点有几个点比当前的点小(作为当前节点的左子树的节点数), 返回右父节点的所有count 和, 向左遍历(想好建好树后最后的点向哪遍历, 向左遍历, 第一个点就遍历了右边的所有的节点) Time: O(NlogN), space: O(N) better than n
阅读全文
摘要:遍历, 没用到bst的性质: 递归
阅读全文
摘要:Iterative做法 分治法: Recursion做法:
阅读全文
摘要:用bst的性质遍历就行了: Just walk down from the whole tree's root as long as both p and q are in the same subtree (meaning their values are both smaller or both
阅读全文

浙公网安备 33010602011771号