![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二叉搜索树
princey2100
这个作者很懒,什么都没留下…
展开
-
Leetcode 450. 删除二叉搜索树中的节点 Delete Node in a BST - Python 递归法
当key不在BST中时,则遍历BST的某一分支都找不到,对吧?即返回到第一层,此时的root和一开始传入的待查找root是一模一样的BST。4.左孩子L和右孩子R都不为None,则找到右子树R的最底层的最左孩子UL。然后让L成为UL的左孩子。1.左右子孩子为None,直接删了完事儿,返回None,与第2.情况一致,可以共用代码;一、key不在二叉搜索树(BST)中,则依此确定递归停止条件,返回None;2.左孩子为None,则返回右孩子为根节点;3.右孩子为None,则返回左孩子为根节点;原创 2022-12-19 13:45:28 · 386 阅读 · 0 评论 -
Leetcode701. 二叉搜索树中的插入操作 Insert into a Binary Search Tree - Python 递归法/迭代法
递归单层逻辑:val与各个root.val比较,大了就往右走,小了就往左走。最后依然给出了迭代的方法,迭代的方法就需要记录当前遍历节点的父节点了,这个和没有返回值的递归函数实现的代码逻辑是一样的。根据父节点root.val(parent.val) 与 val的值大小关系,决定插在root的左孩子还是右孩子;然后在递归中,我们重点讲了如何通过递归函数的返回值完成新加入节点和其父节点的赋值操作,并强调了搜索树的有序性。在代码中时parent);val与各个root.val比较,大了就往右走,小了就往左走;原创 2022-12-12 00:33:59 · 254 阅读 · 0 评论 -
Leetcode235. 二叉搜索树的最近公共祖先 Lowest Common Ancestor of a Binary Search Tree - Python 递归法/迭代法
上面这个递归函数没必要写结束条件,因为BST中一定有且只有唯一的p和q,从根节点出发,左拐右拐左拐右拐,只会走一跟道,那就是成华大道(doge)。从根节点开始,只要root.val 大于 p 和 q的值(root.val介于[p, q],左闭右闭区间),就往左子树走,继续找父节点介于左右子树之间的情况;不用使用回溯,二叉搜索树自带方向性,可以方便的从上向下查找目标区间,遇到目标区间内的节点,直接返回。此题与236类似,但需要利用好二叉搜索树的特点,即父节点值的大小介于左右子树节点值之间。原创 2022-12-10 23:28:49 · 88 阅读 · 0 评论 -
Leetcode501. 二叉搜索树中的众数 Find Mode in Binary Search Tree - Python 递归法
法一:利用二叉搜索树有序特性,中序遍历为有序数组,然后用哈希表统计频率,再将高频的众数返回即可。法二:利用二叉搜索树特性,边遍历,边比较。原创 2022-12-08 16:57:15 · 222 阅读 · 0 评论