自学内容网 自学内容网

day20、21、22补卡

235. 二叉搜索树的最近公共祖先

这道题的解题思路,我想了一会都没想出来,看了题解想:对于二叉搜索树,当我们从上向下去递归遍历,第一次遇到 cur节点是数值在[q, p]区间中,那么cur就是 q和p的最近公共祖先。怎么理解

因为节点6作为父节点,左右两边的范围是[0,6) (6,9], 肯定是公共父节点

但是其他节点,向下遍历的话比如8,左右两边的范围就是(6,8) (8,9]了,所以是第一次遇到的节点

701.二叉搜索树中的插入操作

自己想没想出来,看了题解,首先确定返回值,就是root,将root节点返回给上一层,用左右指针去接住,根据BST的特征,如果大于目标就向左子节点进行递归查找,一步步找到目标应该在的位置,也就是递归到出现null节点的位置,就是val目标节点应该放的位置,然后新建这个目标节点,返回给上一层递归接住

450.删除二叉搜索树中的节点

对于题解中的第五种情况,可以是将右指针放在左子树的最右边的节点的右指针,或者是将左指针放在右子树的最左边的节点的右指针

669. 修剪二叉搜索树

相比于删除节点,修剪的时候,如果当前节点的值小于min,则左子树肯定都小于要删除,所以相当于删除节点中的左指针为空的情况,使用右指针替代返回,但是这里要确保右子树也是在范围内的,所以要进一步调用递归右指针,然后返回右指针,大于max的时候同理

77. 组合

这里的剪枝优化,就是说以当前已有元素数量,如果当前起点位置算起,往后的所有元素加上都无法满足k的数量,那就没必要接着递归了,因为不够,可以在进入的时候判断,直接返回,也可以在for循环的时候,控制这种情况不进入递归方法


原文地址:https://blog.csdn.net/iiiiaaiashah/article/details/140391263

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!