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

政府网站建设怎么做常见的网站推广方式有哪些

政府网站建设怎么做,常见的网站推广方式有哪些,网站一键制作,个人网站 可以做淘宝客吗验证二叉树的前序序列化 题目要求 解题思路 方法一:栈 栈的思路是「自底向上」的想法。下面要结合本题是「前序遍历」这个重要特点。 我们知道「前序遍历」是按照「根节点-左子树-右子树」的顺序遍历的,只有当根节点的所有左子树遍历完成之后&#xf…

验证二叉树的前序序列化

题目要求

在这里插入图片描述
在这里插入图片描述

解题思路

方法一:栈
栈的思路是「自底向上」的想法。下面要结合本题是「前序遍历」这个重要特点。

我们知道「前序遍历」是按照「根节点-左子树-右子树」的顺序遍历的,只有当根节点的所有左子树遍历完成之后,才会遍历右子树。对于本题的输入,我们可以先判断「左子树」是否有效的,然后再判断「右子树」是否有效的,最后判断「根节点-左子树-右子树」是否为有效的。这个思路类似于递归,而把递归改写成循环时,就会使用「栈」,这就是本题使用「栈」的原因。

下面的重点是如何判断一棵子树是否有效?首先考虑最简单情况:怎么判断一个节点是叶子节点?很明显,当一个节点的两个孩子都是 "#"(空)的时候,该节点就是叶子节点。

在这里插入图片描述

当一个节点不是叶子节点的时候,那么它必定至少有一个孩子非空!有两种情况:

两个孩子都非"#"(空);
一个孩子为"#"(空),另一个孩子非"#"(空);
为了兼容这两个情况,我们想出了本题的一个重磅级的技巧:把有效的叶子节点使用 "#" 代替。 比如把 4## 替换成 # 。此时,叶子节点会变成空节点!

在这里插入图片描述

具体操作流程示例如下:

如输入:"9,3,4,#,#,1,#,#,2,#,6,#,#",当遇到 x,#,# 的时候,就把它变为 #

模拟一遍过程:

  1. [9,3,4,#,#] => [9,3,#],继续
  2. [9,3,#,1,#,#] => [9,3,#,#] => [9,#] ,继续
  3. [9,#2,#,6,#,#] => [9,#,2,#,#] => [9,#,#] => [#],结束

方法二:计算入度出度

背景知识:

  • 入度:有多少个节点指向它;
  • 出度:它指向多少个节点。

我们知道在树(甚至图)中,所有节点的入度之和等于出度之和。可以根据这个特点判断输入序列是否为有效的!

在一棵二叉树中:

  • 每个空节点( "#")会提供 0 个出度和 1 个入度。
  • 每个非空节点会提供 2 个出度和 1 个入度(根节点的入度是 0)。

我们只要把字符串遍历一次,每个节点都累加 diff = 出度 - 入度 。在遍历到任何一个节点的时候,要求diff >= 0,原因是还没遍历到该节点的子节点,所以此时的出度应该大于等于入度。当所有节点遍历完成之后,整棵树的 diff == 0

这里解释一下为什么下面的代码中 diff 的初始化为 1。因为,我们加入一个非空节点时,都会对 diff 先减去 1(入度),再加上 2(出度)。但是由于根节点没有父节点,所以其入度为 0,出度为 2。因此 diff 初始化为 1,是为了在加入根节点的时候,diff 先减去 1(入度),再加上 2(出度),此时 diff 正好应该是2.

代码

方法一:


class Solution(object): def isValidSerialization(self, preorder): stack = [] for node in preorder.split(','): stack.append(node) while len(stack) >= 3 and stack[-1] == stack[-2] == '#' and stack[-3] != '#': stack.pop(), stack.pop(), stack.pop() stack.append('#') return len(stack) == 1 and stack.pop() == '#' 

方法二:


class Solution(object): def isValidSerialization(self, preorder): nodes = preorder.split(',') diff = 1 for node in nodes: diff -= 1 if diff < 0: return Falseif node != '#': diff += 2 return diff == 0 

复杂度分析

方法一:

  • 时间复杂度: O ( N ) O(N) O(N)
  • 空间复杂度: O ( N ) O(N) O(N)

方法二:

  • 时间复杂度: O ( N ) O(N) O(N)
  • 空间复杂度: O ( 1 ) O(1) O(1)

参考

负雪明烛

http://www.bjxfkj.com.cn/article/101937.html

相关文章:

  • 洛阳制作网站公司哪家好seo整合营销
  • 说一说网站建设的含义看片应该搜什么关键词哪些词
  • 关于西安网页设计seo怎么做关键词排名
  • 真的有免费做网站的公司吗深圳百度快速排名提升
  • 如何自己做网站的优化推广滕州今日头条新闻
  • 怎么建设一个网站赚钱查询网址域名ip地址
  • 做黄金理财的网站seo首页网站
  • 百度云打开的wordpress武汉seo广告推广
  • 手机app开发 网站建设深圳网站设计公司哪家好
  • 哪里有建站代理加盟免费推广
  • php开发网站 用java做后台?windows优化大师可以卸载吗
  • 自己做的网站可以上架烟吗企业官网怎么做
  • 福田专业网站建设公司seo推广
  • 网站制作哪家实惠seo的推广技巧
  • 外贸网站如何做推广苏州不死鸟分享友情链接
  • 国家卫健委: 最小成本控制疫情兰州网站优化
  • 广告公司官网广东搜索引擎优化
  • 中华室内设计网伍飒爽东营网站seo
  • 网站用亚马逊做标题会侵权吗seo推广怎么收费
  • 网站制作公司的流程网站怎么做谷歌推广
  • 网站页面设计报价模板杭州网站优化平台
  • 网站建设服务合同看网站搜索什么关键词
  • 一级页面的网站怎么做免费b站软件下载
  • 怎么建设卡盟网站万能搜索 引擎
  • PHP网站开发与管理设计心得网络营销包括的主要内容有
  • 怎么用 做网站域名批量注册查询
  • 丝袜做那个的视频网站免费下载百度
  • 食品电子商务网站建设论文免费的关键词优化工具
  • 班级建设网站首页网络搭建是干什么的
  • 网站建设情况营销战略有哪些内容