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

宏发建设有限公司网站营销技巧和营销方法视频

宏发建设有限公司网站,营销技巧和营销方法视频,网站怎么做不违法吗,百度提交网站收录题目:二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大&a…

题目:二叉搜索树的最近公共祖先

  • 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”
题解
  • 本题是二叉搜索树,二叉搜索树是有序的,那得好好利用一下这个特点。因为是有序树,所有 如果 中间节点是 q 和 p 的公共祖先,那么 中节点的数组 一定是在 [p, q]区间的。即 中节点 > p && 中节点 < q 或者 中节点 > q && 中节点 < p。

  • 从根节点搜索,第一次遇到 cur节点是数值在[q, p]区间中,此时可以说明 q 和 p 一定分别存在于 节点 的左子树,和右子树中。所以当我们从上向下去递归遍历,第一次遇到 cur节点是数值在[q, p]区间中,那么cur就是 q和p的最近公共祖先。

    • 确定递归函数返回值以及参数:参数就是当前节点,以及两个结点 p、q。返回值是要返回最近公共祖先,所以是TreeNode * 。

    • 确定终止条件

    • 确定单层递归的逻辑:那么如果 cur->val 大于 p->val,同时 cur->val 大于q->val,那么就应该向左遍历(说明目标区间在左子树上)。

    • class Solution {
      public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {if(root==nullptr){return root;}if(root->val > p->val && root->val > q->val){TreeNode* left=lowestCommonAncestor(root->left,p,q);if(left!=nullptr){return left;}}if(root->val < p->val && root->val < q->val){TreeNode* right=lowestCommonAncestor(root->right,p,q);if(right!=nullptr){return right;}}return root;}
      };
      

题目:二叉搜索树中的插入操作

  • 给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回 任意有效的结果
题解
  • 只要遍历二叉搜索树,找到空节点 插入元素就可以了,那么这道题其实就简单了。

  • 确定递归函数参数以及返回值:参数就是根节点指针,以及要插入元素,返回值的话,可以利用返回值完成新加入的节点与其父节点的赋值操作。递归函数的返回类型为节点类型TreeNode * 。

  • 确定终止条件:终止条件就是找到遍历的节点为null的时候,就是要插入节点的位置了,并把插入的节点返回。

  • 确定单层递归的逻辑:搜索树是有方向了,可以根据插入元素的数值,决定递归方向。到这里,大家应该能感受到,如何通过递归函数返回值完成了新加入节点的父子关系赋值操作了,下一层将加入节点返回,本层用root->left或者root->right将其接住

    • class Solution {
      public:TreeNode* insertIntoBST(TreeNode* root, int val) {if(root == nullptr){TreeNode* temp_node = new TreeNode(val);return temp_node;}if(root->val > val){root->left = insertIntoBST(root->left,val);}if(root->val < val){root->right = insertIntoBST(root->right,val);}return root;}
      };
      

题目:删除二叉搜索树中的节点

  • 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点;然后删除它。
  • 在这里插入图片描述
题解
  • 确定递归函数参数以及返回值

  • 确定终止条件

  • 确定单层递归的逻辑:这里就把二叉搜索树中删除节点遇到的情况都搞清楚。

    • 第一种情况:没找到删除的节点,遍历到空节点直接返回了

    • 第二种情况:左右孩子都为空(叶子节点),直接删除节点, 返回NULL为根节点

    • 第三种情况:删除节点的左孩子为空,右孩子不为空,删除节点,右孩子补位,返回右孩子为根节点

    • 第四种情况:删除节点的右孩子为空,左孩子不为空,删除节点,左孩子补位,返回左孩子为根节点

    • 第五种情况:左右孩子节点都不为空,则将删除节点的左子树头结点(左孩子)放到删除节点的右子树的最左面节点的左孩子上,返回删除节点右孩子为新的根节点。

    • class Solution {
      public:TreeNode* deleteNode(TreeNode* root, int key) {if(root==nullptr){return root;}if(root->val == key){if(root->left == nullptr && root->right == nullptr){delete root;return nullptr;}else if(root->left == nullptr){auto temp=root->right;delete root;return temp;}else if(root->right == nullptr){auto temp=root->left;delete root;return temp;}else{TreeNode* cur=root->right;while(cur->left != nullptr){cur=cur->left;}cur->left=root->left;TreeNode* temp = root;root = root->right; // 返回旧root的右孩子作为新rootdelete temp;return root;}}if(root->val > key) root->left=deleteNode(root->left,key);if(root->val < key) root->right=deleteNode(root->right,key);return root;}
      };
      
  • 因为二叉搜索树添加节点只需要在叶子上添加就可以的,不涉及到结构的调整,而删除节点操作涉及到结构的调整这里最关键的逻辑就是第五种情况(删除一个左右孩子都不为空的节点),这种情况一定要想清楚

http://www.dtcms.com/wzjs/341634.html

相关文章:

  • wordpress网站开发推广一般收多少钱
  • 网页设计企业网站素材库百度账号登录个人中心
  • 运营一个网站的成本南京seo排名扣费
  • 管理咨询营销的客户关系如何维护aso优化重要吗
  • 住房和城乡建设部电工操作证点金推广优化公司
  • 网上有做logo的网站吗苏州seo网络推广
  • 杭州淘策网站开发app推广注册从哪里接单
  • javaweb开发seo技术培训教程
  • 网站需要加wordpress搜索引擎优化原理
  • 上海十大建筑设计公司搜索引擎优化行业
  • 综合型b2b平台有哪些杭州seo渠道排名
  • 京东的网络营销策略星链seo管理
  • 天津品牌网站设计拼多多seo 优化软件
  • 网站建设项目规划书目录东莞网站建设制作
  • 网站怎么进入后台维护百度seo关键词排名技术
  • 政府门户网站如何做预算seo外包服务方案
  • 如何在外贸平台推广项链seo关键词
  • 家电维修做网站生意怎么样电脑培训班零基础网课
  • 公司如何做网站建设指数函数图像
  • 企业网站建设框架图百度网盘客服中心电话
  • 提供电商网站建设怎样创建一个网站
  • 聊城网站空间公司seo优化销售话术
  • 电商网站开发需求文档网站软件开发
  • 电影网站怎么做关键词百度教育app
  • 外文网站搭建公司百度网站优化方案
  • 如何建设好医院网站河北seo推广方案
  • 网站建设的背景有哪些互联网营销师培训课程免费
  • 如何做网站产品图片北京seo编辑
  • led 网站模板网站建设与管理主要学什么
  • 高校网站开发软件网站排行榜