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

网站内容的作用单位门户网站建设方案

网站内容的作用,单位门户网站建设方案,在线制作电子公章生成器,app下载官方免费下载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/626230/

相关文章:

  • 重庆网站制作公司妇联加强网站平台建设
  • php mysql网站开发全程实例.pdf网站的视频怎么下载
  • 海南医院网站建设软件工程公司排名
  • 微信公众号怎么分享wordpress网站优化搜索
  • 永定门网站建设佛山网红打卡景点大全排名榜
  • 网站建设模板推广重庆网络问政平台华龙网
  • 今科云平台网站建设技术中国电力建设股份部官方网站
  • 门户网站的三大基本特征vs2017做的网站如何发布
  • 怎么样自己做网站接订单网站建设和的注意事项
  • 月付商城网站建站男装商城网站建设
  • 建网站的步骤及方法php做的网站怎么运行
  • 英德市住房和城乡建设局手机网站html5手机网站模板下载
  • 网站建设手机建设网站 系统占用空间
  • 网站没内容网站域名.xin
  • 布吉建设网站网站是怎么制作出来的
  • 有赞网站开发凡科建站网
  • html5商业网站开发北大青鸟wordpress免费模版
  • 网站建设及那个科目提升网站页面打开速度
  • 直接玩的网页游戏关键词优化工具有哪些
  • 单页面网站如何优化引流四川网站建设贴吧
  • 贵州省建设银行网站wordpress首页调用文章缩略图
  • 项城市住房和城乡建设局网站融资平台公司
  • asp企业网站设计sage wordpress
  • 做视频网站需要哪些条件wordpress登录页面背景图片尺寸
  • 专门教做衣服的网站西宁电商网站建设
  • 无锡网站科技公司qq哪家公司开发的
  • 强化 门户网站建设今天的新闻大事
  • 专业做刀具网站的公司单页面网站模板
  • 企业网站制作及cms技术wordpress站点 HTML
  • 网络宣传网站建设制作加盟网络推广方案怎么写