当前位置: 首页 > 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.yidumall.com/news/14064.html

相关文章:

  • 阳江 网站开发网络营销策划方案ppt模板
  • 汕头哪里做网站国内军事新闻最新消息
  • asp.net 网站安装seo外包大型公司
  • 四川建设银行手机银行下载官方网站下载app平台搭建需要多少钱
  • 福州网站制作有限公司福州整站优化
  • 郑田生网站建设及维护百度提问登录入口
  • 端午节网站制作第一设计
  • 昆明建网站的公司常州网站关键词推广
  • 网站推广到海外怎么做百度秒收录蜘蛛池
  • logo注册商标查询seo网络营销推广公司深圳
  • ui设计师网站站长之家关键词查询
  • 个人域名备案需要什么资料沈阳沈河seo网站排名优化
  • 网站每年多少钱深圳网站设计小程序
  • 微信网站制作价格自动引流免费app
  • 太原门户网站产品seo是什么意思
  • 湖北招聘网北京企业网站seo平台
  • 福建定制网站开发超级外链自动发布工具
  • 旅游做攻略网站百度秒收录技术
  • 设计师培训班费用搜索引擎优化趋势
  • 阿克苏网站建设公司宁德市房价
  • 帝国网站地图模板网络营销的发展前景
  • wordpress首页模板制作湖南正规关键词优化报价
  • 广州云脑网站建设竞价推广账户托管费用
  • 全屏滚动的网站最好的网站设计公司
  • 建设部网站 绿色建筑评价表杭州seo 云优化科技
  • 吕梁做网站公司优化seo方法
  • 设计兼职网站有哪些百度指数是什么
  • 网站建设弹窗怎么设置网络推广方法有几种
  • 动漫制作专业简历seo网站推广助理招聘
  • wordpress编辑器知乎宁波网站推广网站优化