当前位置: 首页 > news >正文

avada做外贸网站常州网站推广公司

avada做外贸网站,常州网站推广公司,莱芜信息港房产,修改wordpress标签大小非科班学习算法day20 | LeetCode235:二叉搜索树的最近公共祖先 ,Leetcode701:二叉树的插入操作 ,Leetcode450:删除二叉搜索树的节点 介绍 包含LC的两道题目,还有相应概念的补充。 相关图解和更多版本: 代码随想录 (programmer…

非科班学习算法day20 | LeetCode235:二叉搜索树的最近公共祖先 ,Leetcode701:二叉树的插入操作 ,Leetcode450:删除二叉搜索树的节点 


介绍

包含LC的两道题目,还有相应概念的补充。

相关图解和更多版本:

代码随想录 (programmercarl.com)https://programmercarl.com/#%E6%9C%AC%E7%AB%99%E8%83%8C%E6%99%AF


一、LeetCode题目

1.LeetCode235:二叉搜索树的最近公共祖先 

题目链接:235. 二叉搜索树的最近公共祖先 - 力扣(LeetCode)

题目解析

       和普通二叉树最大的区别就是搜索树是有序的,那么我们可以

 c++代码如下:

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/class Solution {
public:// 和普通二叉树比,肯定是不用遍历全部树// 那么怎样才可以找到结果呢TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {if (!root)return NULL;if (root->val == p->val || root->val == q->val) {return root;}if (root->val > p->val && root->val > q->val) {return lowestCommonAncestor(root->left, p, q);}if (root->val < p->val && root->val < q->val) {return lowestCommonAncestor(root->right, p, q);} elsereturn root;}
};

注意点1:

 2.Leetcode701:二叉搜索树的插入操作 

题目链接:701. 二叉搜索树中的插入操作 - 力扣(LeetCode)

题目解析

       根据二叉搜索树的性质,可以进行单边搜索。题目中说任意的插入类型都可以,那么遇到空节点进行插入,而不需要调整树的结构。

 C++代码如下: 

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left),* right(right) {}* };*/
class Solution {
public:TreeNode* insertIntoBST(TreeNode* root, int val) {if (!root) {TreeNode* new_node = new TreeNode(val);return new_node;}if (root->val > val)root->left = insertIntoBST(root->left, val);if (root->val < val)root->right = insertIntoBST(root->right, val);return root;}
};

注意点:搜索二叉树通常是单边搜索,那么这时候需要用值“接住”我们的递归函数;而且我们要明确,在这道题中递归是向下的,返回的类型是节点,节点可以拼接在上一层的节点上,这就是递归寻找的思路

3.Leetcode450:删除二叉搜索树中的节点

题目链接:450. 删除二叉搜索树中的节点 - 力扣(LeetCode)

题目解析

       删除的操作一定涉及到树的结构改变,但是通过自己画图理解可以发现,删除的不过是叶子节点或者中间(根)节点,那么就要分情况处理每一种,而且对于递归的逻辑就是我们需要返回需要的节点,将节点接住,构成新的树

C++代码如下:

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left),* right(right) {}* };*/
class Solution {
public:// 必有结构调整TreeNode* deleteNode(TreeNode* root, int key) {// 中止条件if (!root)return root;// 删除条件if (root->val == key) {// 模拟情况-左节点空右节点空if (!root->left && !root->right) {delete root;return nullptr;}// 模拟情况-左节点空右节点非空if (!root->left && root->right) {auto temp = root->right;delete root;return temp;} // return root->right;// 模拟情况-右节点空左节点非空if (!root->right && root->left) {auto temp = root->left;delete root;return temp;} // return root->left;// 模拟情况-左节点非空右节点非空if (root->left && root->right) {TreeNode* cur = root->right;while (cur->left != nullptr) {cur = cur->left;}cur->left = root->left;TreeNode* to_del = root;root = root->right;delete to_del;return root;}}if (root->val < key)root->right = deleteNode(root->right, key);if (root->val > key)root->left = deleteNode(root->left, key);return root;}
};

注意点1:这里分情况是根据左右孩子节点的情况分类,因为找到需要的值之后,要根据他的节点情况将整颗孩子树移动;对于两边都不为空的节点,这里是将右节点作为补位的节点,实际上左节点也可以。

 

总结


打卡第20天,坚持!!!

http://www.ds6.com.cn/news/27963.html

相关文章:

  • 自己做soho需要做网站吗手机怎么制作网页
  • 帮助做APP的网站公司网络营销的六个特点
  • 台湾外贸网站平台友情链接举例
  • 电脑路由器做网站服务器网店代运营可靠吗
  • 有人在相亲网站骗人做传销百度推广靠谱吗
  • 凤岗镇网站建设四川网站推广公司
  • 哪一家做网站好百度热搜高考大数据
  • wordpress 中文插件下载四川百度推广和seo优化
  • 永久免费建个人主页湖南seo网站策划
  • 网站开发和广告制作网站权重查询
  • 做网站开发学什么必应搜索引擎网站
  • 微信如何做积分商城网站整站seo排名要多少钱
  • 公众号开发者中心在哪厦门百度seo点击软件
  • 网站内容建设流程sem搜索引擎营销是什么
  • 同性男做性视频网站渠道网络
  • 大型集团网站建设徐州seo网站推广
  • 济南做网站优化seo优缺点
  • 图怪兽在线设计平台成都seo推广
  • 网站建设简运维 简历发帖推广平台
  • 义乌制作网站开发app推广拉新平台
  • 陕西网站建设公司找哪家百度最怕哪个部门去投诉
  • 别墅室内设计网站河北百度seo软件
  • 珠海企业网站制作公司百度搜索风云榜下载
  • 做网站推广一般多少钱武汉百度快速排名提升
  • app拉新一手渠道优化网站软文
  • 中国社交网站做多外国人的短信广告投放
  • 免费企业网站模板html百度网盘官网登录入口
  • 废旧材料手工制作大全黑帽seo是什么
  • 网站建设硬件开支做网络推广
  • 网站性能优化方案企业推广的渠道有哪些