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

上海网站建设官网seo任务

上海网站建设官网,seo任务,个人简历样本范文,2024手机热销榜第一名235. 二叉搜索树的最近公共祖先 1. LeetCode链接 力扣#xff08;LeetCode#xff09;官网 - 全球极客挚爱的技术成长平台 2. 题目描述 3. 解法 利用二叉搜索树的特性进行公共节点的判断#xff1a; 1. 此节点为公共节点#xff1a;p、q恰好在此节点的左右棵子树上。即…235. 二叉搜索树的最近公共祖先 1. LeetCode链接 力扣LeetCode官网 - 全球极客挚爱的技术成长平台 2. 题目描述 3. 解法 利用二叉搜索树的特性进行公共节点的判断 1. 此节点为公共节点p、q恰好在此节点的左右棵子树上。即root的val在p、q的val所构成的闭区间内。 2. 如果p、q的val恰好都大于root的val则只需要考虑root-right 3. 如果p、q都小于root则只考虑root-left class Solution { public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {if (root NULL) return NULL;if (root-val p-val root-val q-val || root-val p-val root-val q-val) return root;else if (p-val root-val q-val root-val) return lowestCommonAncestor(root-right, p, q);else return lowestCommonAncestor(root-left, p, q);} }; 更精简一点 class Solution { public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {if (p-val root-val q-val root-val) return lowestCommonAncestor(root-right, p, q);else if (p-val root-val q-val root-val) return lowestCommonAncestor(root-left, p, q);else return root;} }; 迭代法 class Solution { public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {queueTreeNode* qu;qu.push(root);TreeNode* cur;while (!qu.empty()) {cur qu.front();qu.pop();if (q-val cur-val p-val cur-val) qu.push(cur-left);else if (q-val cur-val p-val cur-val) qu.push(cur-right);else break;}return cur;} }; 更加精简的 class Solution { public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {while(root) {if (root-val p-val root-val q-val) {root root-left;} else if (root-val p-val root-val q-val) {root root-right;} else return root;}return NULL;} };701. 二叉搜索树中的插入操作 1. LeetCode链接 力扣LeetCode官网 - 全球极客挚爱的技术成长平台 2. 题目描述 3. 解法 先在二叉搜索树中查询val直到找到NULL然后将val插入该NULL。 迭代 class Solution { public:TreeNode* insertIntoBST(TreeNode* root, int val) {TreeNode* a new TreeNode(val);if (root NULL) return a;TreeNode* cur root;while (cur) {if (cur-val val cur-left ! NULL) cur cur-left;else if (cur-val val cur-left NULL) {cur-left a;break;}else if (cur-val val cur-right ! NULL) cur cur-right;else {cur-right a;break;}}return root;} }; 递归。相当于将在遍历至NULL的路上重新连接原本的树直到遇到NULL然后把NULL换成val。 1. 参数和返回值。参数当前节点和val。返回值当前节点。 2. 终止条件。遇到NULL且将NULL替换为val。 3. 比较root和val确定从左子树走还是右子树走root-left root-left  /  root-right root-right; class Solution { public:TreeNode* insertIntoBST(TreeNode* root, int val) {if (root NULL) {TreeNode* n new TreeNode(val);return n;}if (root-val val) root-left insertIntoBST(root-left, val);if (root-val val) root-right insertIntoBST(root-right, val);return root;} }; 450. 删除二叉搜索树中的节点 1. LeetCode链接 力扣LeetCode官网 - 全球极客挚爱的技术成长平台 2. 题目描述 3. 解法 删除节点后需要考虑是让左子树上位还是右子树上位。这道题的话无所谓暂且让左子树上位吧。这个时候问题来了右子树该如何安排? 其实这道题目可以看成左子树上位后将右子树插入左子树因为两边都是二叉搜索树且左子树必小于右子树所以只要简单插入即可。 class Solution { public:TreeNode* insertNode(TreeNode* root, TreeNode* key) {if (root NULL) return key;if (key NULL) return root;if (key-val root-val) root-right insertNode(root-right, key);if (key-val root-val) root-left insertNode(root-left, key);return root;}TreeNode* deleteNode(TreeNode* root, int key) {if (root NULL) return NULL;if (root-val key) {TreeNode* left root-left;TreeNode* right root-right;delete root;return insertNode(left, right);}if (key root-val) root-right deleteNode(root-right, key);if (key root-val) root-left deleteNode(root-left, key);return root;} }; 细想的话其实如果将左子树上位右子树一定被插在左子树中的最右节点的右节点上如果让右子树上位左子树一定被插在最左节点的左节点上。 class Solution { public:TreeNode* deleteNode(TreeNode* root, int key) {if (root NULL) return NULL;if (root-val key) {TreeNode* left root-left;TreeNode* right root-right;delete root;if (left NULL) return right;if (right NULL) return left;TreeNode* cur left;while (left ! NULL left-right ! NULL) left left-right;left-right right;return cur;}if (key root-val) root-right deleteNode(root-right, key);if (key root-val) root-left deleteNode(root-left, key);return root;} }; 更巧妙的是删除当前节点后最合适的候选节点是左子树最右节点或者右子树最左节点。可以通过交换val值将root换到底部然后再遇到root后直接删除。 class Solution { public:TreeNode* deleteNode(TreeNode* root, int key) {if (root nullptr) return root;if (root-val key) {if (root-right nullptr) { // 这里第二次操作目标值最终删除的作用return root-left;}TreeNode *cur root-right;while (cur-left) {cur cur-left;}swap(root-val, cur-val); // 这里第一次操作目标值交换目标值其右子树最左面节点。}root-left deleteNode(root-left, key);root-right deleteNode(root-right, key);return root;} };
http://www.pierceye.com/news/29141/

相关文章:

  • 吉林省建设厅网站周军页面访问
  • 网络营销推广的平台搜索引擎优化的策略主要有
  • 企业网站建设申请怎么写大学教学应用网站开发现状
  • 网站建设论文参考文献网站批量上传文章
  • 做网站美工要学什么网站编辑器是怎么做的
  • 一 网站建设的目的和目标个人网站可以做淘宝客吗
  • 留号码的广告网站经典网站源码
  • 正规网站建设价格费用注册会计师考试科目
  • 招标网站排名信用卡在哪些网站上做推广
  • 厦门维品网站建设网站布局 下载
  • 不懂见网站怎么办wordpress压缩图片
  • 网站备案 新网大连英文网站建设
  • 重庆做的好的房产网站网站建设如何描述
  • 分析海尔网站的建设特点和优势金华兰溪网站建设
  • net网站开发参考文献吉林seo排名公司
  • 建网站大概多少费用深圳公司举报网站
  • 罗庄区住房和城乡建设局网站网站接口设置
  • 南磨房做网站公司网址导航模板
  • 石家庄营销型网站建设费用护肤品网站建设的摘要
  • 谁有马和人做的网站学校网站的建设费用
  • php网站开发方案注册安全工程师考试结果查询
  • 网站开发要跑道吗建行网上银行
  • 浙江新中环建设有限公司 网站山东潍坊网站制作公司
  • html网页制作接单南宁seo按天收费
  • 陶瓷 中企动力 网站建设定制网络接口报警灯生产厂商
  • 嘉兴网站备案去哪里呼叫中心系统有哪些
  • 企业网站建设源码+微信+手机网站图片的作用
  • 站长工具域名查询自己做的网站搜索不到
  • 2h1g做视频网站980网站
  • 网站打不开 别人能打开dedecms和wordpress