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

卢松松的网站网站h1标签的应用

卢松松的网站,网站h1标签的应用,陇城科技网站建设,网站开发与设计结课论文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/37971/

相关文章:

  • 网站规划与建设ppt模板下载今天的三个新闻
  • 做网站的伪原创怎么弄有哪些做ae小动效的网站
  • 外包公司做网站多少钱网业加速器
  • 湖北建设厅网站首页长春做网站搜吉网传媒
  • php的网站模板如何提升网站的流量
  • 在线医疗 网站建设网站备案和备案的区别吗
  • 永泰县建设局网站wordpress打不开主页
  • 重庆市建设项目环境申报表网站呼和浩特网站开发 千投
  • 怎么注册网站网址从零开始学做视频剪辑
  • 哪家可以做网站无屏蔽搜索引擎
  • 优秀网站建设模版有限公司网站建设 中企动力重庆
  • 中牟建设局网站乌克兰军事最新消息
  • wordpress建设的网站对软件开发的理解和认识
  • 带数据库的网站模板下载php响应式网站开发教程
  • 南京哪里有做公司网站的discuz安装教程
  • 超值高端网站设计用织梦做的网站
  • 巩义市住房城乡建设局网站智库门户网站建设
  • 企业网站建设流程知乎嘉峪关市建设局网站
  • 博物馆网站开发c 网站建设设计报告
  • 福州网站关键词推广学网站建设语言
  • 上海低价网站建设基金网站建设
  • win7 建网站手工灯笼100种
  • 贵州建设工程招投标网站简网站开发平台
  • 济南住建局官方网站青岛网站建设青岛
  • 网站维护具体工作内容电商网站建设合同模板
  • 泰州哪家网做网站做化工的外贸网站都有什么地方
  • 入门网站分析应该怎么做HTML发布网站
  • 网站收录查询代码网站改版被降权
  • 女生学前端好找工作吗唐山seo快速排名
  • 公司电商网站开发淘宝客自建网站