百度SEO

百度SEO

Products

当前位置:首页 > 百度SEO >

如何建立一个专业且吸引人的网站?

96SEO 2026-02-19 08:59 0


码solution

中序与后序遍历序列构造二叉树思路及代码solution相关题目

如何建立一个专业且吸引人的网站?

654

二叉搜索树相关700.二叉搜索树中的搜索算法思路与代码solution

本文是基于代码随想录上二叉树章节的所有例题及其对应的算法思路序号代表的是力扣题号

我写在最前面

labuladong二叉树纲领篇——遇到一道二叉树的题目时的通用思考过程是

traverse

2、是否可以定义一个递归函数通过子问题子树的答案推导出原问题的答案如果可以写出这个递归函数的定义并充分利用这个函数的返回值。

3、无论使用哪一种思维模式你都要明白二叉树的每一个节点需要做什么需要在什么时候前中后序做。

226.翻转二叉树

我们既然需要翻转整颗二叉树那么我们不妨先翻转左子树在翻转右子树然后将跟节点的左右子树交换即可这样就好啦

solution

而且我们需要在往下去递归之前做这件事情也就是在前序位置去交换左右节点

/***

invertTree(root-left);TreeNode*

left

invertTree(root-right);root-rightright;root-leftleft;return

root;}

遍历二叉树交换每个节点的子节点traverse(root);return

root;}//

遍历框架去遍历左右子树的节点traverse(root-left);traverse(root-right);}

};101.对称二叉树

我们先不管代码怎么实现我们是不是同样遍历一遍二叉树就可以把这个问题解决掉

solution

对于这道题目我们首先是不是同样可以用遍历的思路来解决终止条件就是到达叶子节点我们只需要一个traverse函数和一个外部变量来实现就行在刚刚进入一个结点的时候前序位置去更新我们的maxdepth在离开一个节点之前后序位置去维护depth。

class

depth);traverse(root-left);traverse(root-right);//

后序遍历位置depth--;}

我们要求一颗二叉树的最大深度我们只需要分别知道它的左右子树的最大深度即可然后return

class

currentDepth);}traverse(root-left);traverse(root-right);//

撤销选择在离开节点时减少当前深度currentDepth--;}public:int

minDepth(TreeNode*

我觉得有了上一题的铺垫首先应该是想到这种办法思路也非常明确就是想找到左右子树各自的最小深度然后再加上根节点

但是力扣给的示例没有全部通过它给的示例是一颗斜树准确的来说是条五个节点的链表这种就是极端的情况我们怎么去解决它呢

0的情况发生参照下面的预期结果所以我们就需要在即将离开一个节点之前判断此时的左右子树是否为空也就是leftmin/rightmin为0的情况

leftmin0那么我们就return

是因为在求最大深度时我们的出口是到叶子节点就行一股脑的往下冲不会面临着是否为空的问题

而我们要求最小深度时其实更像是一个探险的人需要一步一步地走需要避开危险

deepseek

最小深度中当左子树为空时(root.left为None)右子树的深度决定了当前节点的最小深度。

同理处理右子树为空的情况。

只有左右子树均存在时才取较小值加1确保路径有效。

关键

最大深度直接取左右子树的最大值加1无需特殊处理空子树因为空子树的深度0不会影响非空子树的最大值结果

修改之后AC

rightminminDepth(root-right);int

leftminminDepth(root-left);if(leftmin0){return

rightmin1;}if(rightmin0){return

leftmin1;}return

读完这道题我就有思路了就是把左右子树的分别有多少个节点给他算出来然后相加不就行了吗

确实能AC也很简单

意味着我们其实是可以利用完全二叉树的特性来解决问题的这才是这题高效率的关键因此就有了solution2

class

rightcountNodes(root-right);int

result;}

假如你学习过懒猫老师的课程你一定知道如果给你一个满二叉树的深度k那么它的节点数就是2的k次方-1而给你一个二叉树的层数x那么这一层有2的X-1次幂

个节点

对于这道题其实不用想的太复杂还是一样就问你是不是遍历一遍就可以判断是否为二叉平衡树了怎么判断呢是不是把两个左右子树高度搞出来然后比较一下就行了代码上就是借助一个外部变量然后一个compare函数就行

我们需要知道这个compare函数帮我们做了什么事情需要明确给出这个函数的定义返回以该节点为根节点的二叉树的高度如果不是平衡二叉树了则返回-1

不然就很容易被绕进去

如何判断以当前传入节点为根节点的二叉树是否是平衡二叉树呢当然是其左子树高度和其右子树高度的差值。

分别求出其左右子树的高度然后如果差值小于等于1则返回当前二叉树的高度否则返回-1表示已经不是二叉平衡树了。

class

leftcompare_height(root-left);if(left-1){return

-1;}int

rightcompare_height(root-right);if(right-1){return

-1;}return

compare_height(root);if(result!-1){return

true;}else{return

这也是labuladong在它的文章中提到的二叉树与动态规划和回溯算法之间的关系

算法思路及代码

root-rightnullptr)//叶子节点{return

0;}int

leftsumsumOfLeftLeaves(root-left);if(root-left!nullptr

root-left-rightnullptr){leftsumroot-left-val;}int

rightsumsumOfLeftLeaves(root-right);int

sum;}

一个find函数和一个变量depth就能解决问题其次我们需要确定这个函数的终止条件递归的出口是不是当遇到叶子节点的时候就需要更新depth了用一个result记录此时深度最左边节点的值再次我们需要给这个find函数一个明确的定义就是给一个根节点返回最大深度最左边孩子的值细节方面

所以还是采用前序遍历先给MAXdepth先定义成最小的整型确保MAXdepth能够正常更新

result同理

root-rightnullptr){//如果找到叶子节点更新最大深度if(depthMaxdepth){Maxdepthdepth;resultroot-val;}return;}if(root-left!nullptr){depth;//前序位置traverse(root-left,depth);depth--;//后序位置

回溯在离开节点时维护depth}if(root-right!nullptr){depth;traverse(root-right,depth);depth--;}return;}int

root)

弄个node指向每一层的第一个节点result记录每次node指向的值直到队空停止循环

class

我们需要判断二叉树中是否存在从根节点到叶子节点的路径使得路径上所有节点值的和等于给定的目标和

targetSum。

我们可以通过递归的方式实现这一点具体来说使用前序遍历根-左-右来遍历二叉树。

详细步骤

一开始我想用一个vector向量来保存每次递归到叶子节点sum的值

也就是说需要遍历出所有路线然后在主函数中for循环遍历我们的vector

true

向量中record.push_back(sum);return;}//

sum,

因为我们一开始在学习二叉树的前中后序遍历时一般都是给我们一颗二叉树

如果不明白C

相信你一定对于这题有了最基本的认知只不过对于代码实现还是不太清楚

给你一个前序后序

哈希表inpos的作用就是存储中序遍历的值与其位置的映射比如说后序遍历的最后一个元素是根节点

solution

使用哈希表存储中序遍历中每个值的位置以便快速查找根节点在中序遍历中的位置unordered_mapint,intinpos;

public:/***

i0;in;i){inpos[inorder[i]]i;}//

build(inorder,postorder,0,n-1,0,n-1);}/***

param

如果中序遍历的左边界大于右边界说明已经没有节点返回空指针if(ilir

plpr){return

递归构建左子树root-leftbuild(inorder,postorder,il,ilk-1,pl,plk-1);//

递归构建右子树root-rightbuild(inorder,postorder,ilk1,ir,plk,pr-1);//

root;}

constructMaximumBinaryTree([3,2,1,6,0,5])

{//

constructMaximumBinaryTree({3,2,1});root-right

constructMaximumBinaryTree({0,5});return

root;

中的最大值就是根节点然后根据索引递归调用左右数组构造左右子树即可

TreeNode*

constructMaximumBinaryTree(vectorint

nums)

constructMaximumBinaryTree(nums[0..index-1]);root-right

constructMaximumBinaryTree(nums[index1..nums.size()-1]);

}前序后序不唯一

postorder[postStart..postEnd]//

build(vectorint

TreeNode(preorder[preStart]);}//

root

根据左子树的根节点索引和元素个数推导左右子树的索引边界root-left

build(preorder,

*每个二叉树节点都可以认为是一棵子树的根节点对于根节点首先要做的当然是把想办法把自己先构造出来然后想办法构造自己的左右子树。

maxVal从而把根节点

constructMaximumBinaryTree(vectorint

nums)

{//递归终止条件只有一个元素的时候if(nums.size()1)return

new

i0;inums.size();i){if(nums[i]maxval){maxvalnums[i];indexi;//不断更新maxval//直到遍历完整个数组找到最大值}}TreeNode*

rootnew

TreeNode(maxval);//递归创建左子树if(index0){vectorintvec(nums.begin(),nums.begin()index)

;//创建一个数组来存储左子树元素范围root-leftconstructMaximumBinaryTree(vec);}//右子树if(indexnums.size()-1)//说明至少还有一个元素{vectorintvec2(nums.begin()index1,nums.end());root-rightconstructMaximumBinaryTree(vec2);}return

root;}

**************************************

class

constructMaximumBinaryTree(std::vectorint

nums)

searchBST(root-left,val);}if(root-valval){return

searchBST(root-right,val);}return

nullptr;}



SEO优化服务概述

作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。

百度官方合作伙伴 白帽SEO技术 数据驱动优化 效果长期稳定

SEO优化核心服务

网站技术SEO

  • 网站结构优化 - 提升网站爬虫可访问性
  • 页面速度优化 - 缩短加载时间,提高用户体验
  • 移动端适配 - 确保移动设备友好性
  • HTTPS安全协议 - 提升网站安全性与信任度
  • 结构化数据标记 - 增强搜索结果显示效果

内容优化服务

  • 关键词研究与布局 - 精准定位目标关键词
  • 高质量内容创作 - 原创、专业、有价值的内容
  • Meta标签优化 - 提升点击率和相关性
  • 内容更新策略 - 保持网站内容新鲜度
  • 多媒体内容优化 - 图片、视频SEO优化

外链建设策略

  • 高质量外链获取 - 权威网站链接建设
  • 品牌提及监控 - 追踪品牌在线曝光
  • 行业目录提交 - 提升网站基础权威
  • 社交媒体整合 - 增强内容传播力
  • 链接质量分析 - 避免低质量链接风险

SEO服务方案对比

服务项目 基础套餐 标准套餐 高级定制
关键词优化数量 10-20个核心词 30-50个核心词+长尾词 80-150个全方位覆盖
内容优化 基础页面优化 全站内容优化+每月5篇原创 个性化内容策略+每月15篇原创
技术SEO 基本技术检查 全面技术优化+移动适配 深度技术重构+性能优化
外链建设 每月5-10条 每月20-30条高质量外链 每月50+条多渠道外链
数据报告 月度基础报告 双周详细报告+分析 每周深度报告+策略调整
效果保障 3-6个月见效 2-4个月见效 1-3个月快速见效

SEO优化实施流程

我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:

1

网站诊断分析

全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。

2

关键词策略制定

基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。

3

技术优化实施

解决网站技术问题,优化网站结构,提升页面速度和移动端体验。

4

内容优化建设

创作高质量原创内容,优化现有页面,建立内容更新机制。

5

外链建设推广

获取高质量外部链接,建立品牌在线影响力,提升网站权威度。

6

数据监控调整

持续监控排名、流量和转化数据,根据效果调整优化策略。

SEO优化常见问题

SEO优化一般需要多长时间才能看到效果?
SEO是一个渐进的过程,通常需要3-6个月才能看到明显效果。具体时间取决于网站现状、竞争程度和优化强度。我们的标准套餐一般在2-4个月内开始显现效果,高级定制方案可能在1-3个月内就能看到初步成果。
你们使用白帽SEO技术还是黑帽技术?
我们始终坚持使用白帽SEO技术,遵循搜索引擎的官方指南。我们的优化策略注重长期效果和可持续性,绝不使用任何可能导致网站被惩罚的违规手段。作为百度官方合作伙伴,我们承诺提供安全、合规的SEO服务。
SEO优化后效果能持续多久?
通过我们的白帽SEO策略获得的排名和流量具有长期稳定性。一旦网站达到理想排名,只需适当的维护和更新,效果可以持续数年。我们提供优化后维护服务,确保您的网站长期保持竞争优势。
你们提供SEO优化效果保障吗?
我们提供基于数据的SEO效果承诺。根据服务套餐不同,我们承诺在约定时间内将核心关键词优化到指定排名位置,或实现约定的自然流量增长目标。所有承诺都会在服务合同中明确约定,并提供详细的KPI衡量标准。

SEO优化效果数据

基于我们服务的客户数据统计,平均优化效果如下:

+85%
自然搜索流量提升
+120%
关键词排名数量
+60%
网站转化率提升
3-6月
平均见效周期

行业案例 - 制造业

  • 优化前:日均自然流量120,核心词无排名
  • 优化6个月后:日均自然流量950,15个核心词首页排名
  • 效果提升:流量增长692%,询盘量增加320%

行业案例 - 电商

  • 优化前:月均自然订单50单,转化率1.2%
  • 优化4个月后:月均自然订单210单,转化率2.8%
  • 效果提升:订单增长320%,转化率提升133%

行业案例 - 教育

  • 优化前:月均咨询量35个,主要依赖付费广告
  • 优化5个月后:月均咨询量180个,自然流量占比65%
  • 效果提升:咨询量增长414%,营销成本降低57%

为什么选择我们的SEO服务

专业团队

  • 10年以上SEO经验专家带队
  • 百度、Google认证工程师
  • 内容创作、技术开发、数据分析多领域团队
  • 持续培训保持技术领先

数据驱动

  • 自主研发SEO分析工具
  • 实时排名监控系统
  • 竞争对手深度分析
  • 效果可视化报告

透明合作

  • 清晰的服务内容和价格
  • 定期进展汇报和沟通
  • 效果数据实时可查
  • 灵活的合同条款

我们的SEO服务理念

我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。

提交需求或反馈

Demand feedback