day21

1.669. 修剪二叉搜索树(难):递归法,当当前节点的值小于区间最小值,就遍历其右子树(左子树肯定都不符合条件,可以完全放弃了),直到返回符合条件的结点作为当前根节点(大于区间最大值时同理)。
然后再继续处理下一层,即对它的左右结点分别作为根节点进行递归,最后将处理后得到的结果作为左右子节点返回给当前根节点。
2.108.将有序数组转换为二叉搜索树:要求是平衡二叉搜索树,所以取数组中间值作为根节点,然后进行分割。再递归获取左右子树的根节点(根据分割点生成相对应的左右子树的区间)。
3.538.把二叉搜索树转换为累加树:题目要求把当前结点与比它大的值都做一个相加操作。采用递归右中左遍历(结点值是倒序的),双指针执行相加操作。

文本查询项目终于搞清楚了各个类之间的关系,以及函数调用的过程。但还是有点懵懵的,等后面学了面向对象的设计应该会有更深的理解。
全部评论

相关推荐

11-17 20:52
南昌大学 C++
1.530.二叉搜索树的最小绝对差:依然是利用二叉搜索树中序遍历得到的结点是有序的特性,对其进行递归中序遍历,并采用双指针法得到两个结点间的绝对差(中序遍历得到的有序数组中相邻两个结点间的绝对差一定是最小的,不需要再去与更远的结点进行比较,只需要比较两两相邻间的差值就够了),最后通过对绝对差进行不断更新就能获得最小绝对差。2.501.二叉搜索树中的众数: 递归中序遍历,双指针比较前后两个结点是否相等,同时更新maxValue,当count==maxValue时,将该元素加入到结果集中。如果count>maxValue,要注意更新maxValue的值,并清空结果集(失效)。注意递归过程中这些值都要是全局变量。3.236.二叉树的最近公共祖先:递归后序遍历,        //左右子树都不为空,说明找到了pq,此时root就是最近公共祖先        if(left != NULL && right != NULL) return root;        //当一边找了了p/q,就直接返回这边的结点,        //当层层递归结束,要么会只返回这个结点(这个结点本身就是最近公共祖先)        //要么会与另外一支汇合,分别作为左右结点返回值,最后返回他们此时的根节点        if(left != NULL && right == NULL) return left;        else if(left == NULL && right != NULL) return right;        else return NULL;这两天被文本查询卡住了,有点烦躁,把权游八季的解说看完了,现在心静下来了,后面继续刷算法,搞完这个文本查询就开始学STL了。不要放弃!
点赞 评论 收藏
分享
1. C++中的构造函数和析构函数的作用是什么?2. 什么是C++中的命名空间?如何使用?3. C++中的虚析构函数有什么作用?4. C++中如何实现抽象类和接口?5. 什么是多态的静态绑定和动态绑定?6. C++中的默认参数是什么?如何使用?7. 什么是C++中的强制类型转换?8. C++中如何使用std::vector和std::list的区别?9. 什么是C++中的std::map和std::set?10. C++中的异常安全性分为哪几种级别?11. 什么是C++中的内存对齐?12. C++中如何使用std::pair和std::tuple?13. C++中的friend类和friend函数有什么区别?14. C++中如何实现模板类?15. 什么是C++中的类型推导(decltype)?16. C++中的智能指针如何防止内存泄漏?17. C++中如何使用std::shared_ptr和std::weak_ptr?18. C++中的std::mutex和std::lock_guard有什么区别?19. 什么是C++中的线程安全容器?20. C++中如何实现条件变量的使用?21. 什么是C++中的移动语义?22. C++中的std::function和函数指针有什么区别?23. C++中如何使用std::algorithm库?24. C++中的std::initializer_list是什么?25. C++中如何使用模板元编程?26. 什么是C++中的类型特征(type traits)?27. C++中如何实现自定义的迭代器?28. C++中的std::unique_ptr和std::shared_ptr的使用场景是什么?29. C++中如何处理字符串和字符数组的区别?30. C++中如何使用std::string和C风格字符串?31. 什么是C++中的析构函数的虚函数?32. C++中如何实现运算符重载的友元函数?33. C++中的std::array和C风格数组有什么区别?34. C++中如何使用范围for循环遍历容器?35. C++中的std::optional是什么,如何使用?嵌入式C++面经推荐大佬面经  链接在下边  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务