【Leetcode】331

“9,3,4,#,#,1,#,#,2,#,6,#,#”,其中

#

代表一个空节点。

给定一串以逗号分隔的序列,验证它是否是正确的二叉树的前序序列化。编写一个在不重构树的条件下的可行算法。

保证 每个以逗号分隔的字符或为一个整数或为一个表示

n

u

l

l

null

null 指针的

‘#’

′#′ 。

你可以认为输入格式总是有效的

例如它永远不会包含两个连续的逗号,比如

"

1

,

,

3

"

“1,3”

“1,3” 。
注意:不允许重建树。

示例 1:
输入:

p

r

e

o

r

d

e

r

=

"

9

,

3

,

4

,

,

,

1

,

,

,

2

,

,

6

,

,

"

preorder = “9,3,4,#,#,1,#,#,2,#,6,#,#”

preorder=“9,3,4,#,#,1,#,#,2,#,6,#,#”
输出:

t

r

u

e

true

true

示例 2:
输入:

p

r

e

o

r

d

e

r

=

"

1

,

"

preorder = “1,#”

preorder=“1,#”
输出:

f

a

l

s

e

false

false

示例 3:
输入:

p

r

e

o

r

d

e

r

=

"

9

,

,

,

1

"

preorder = “9,#,#,1”

preorder=“9,#,#,1”
输出:

f

a

l

s

e

false

false

提示:

  • 1

p

r

e

o

r

d

e

r

.

l

e

n

g

t

h

1

0

4

1 \leq preorder.length \leq 10^4

1≤preorder.length≤104

  • p

r

e

o

r

d

e

r

preorder

preorder 由以逗号

"

"

“,”

“,” 分隔的

[

0

,

100

]

[0,100]

[0,100] 范围内的整数和

“#”

“#” 组成

思路

这道题要求验证给定的序列是否是正确的二叉树的前序序列化,而且不能重建树。可以使用迭代的方法来模拟整个过程。

可以观察到一个有效的二叉树序列化中,非空节点后面必然跟着两个

‘#’

′#′表示空节点,因为二叉树中的每个节点都有两个子节点(包括空节点)。所以可以遍历序列,当遇到一个非空节点时,记录之后的两个节点是否为

‘#’

′#′,如果是则继续遍历,否则返回

f

a

l

HTTP

  • HTTP 报文结构是怎样的?

  • HTTP有哪些请求方法?

  • GET 和 POST 有什么区别?

  • 如何理解 URI?

  • 如何理解 HTTP 状态码?

  • 简要概括一下 HTTP 的特点?HTTP 有哪些缺点?

  • 对 Accept 系列字段了解多少?

  • 对于定长和不定长的数据,HTTP 是怎么传输的?

  • HTTP 如何处理大文件的传输?

  • HTTP 中如何处理表单数据的提交?

  • HTTP1.1 如何解决 HTTP 的队头阻塞问题?

  • 对 Cookie 了解多少?

  • 如何理解 HTTP 代理?

  • 如何理解 HTTP 缓存及缓存代理?

  • 为什么产生代理缓存?

  • 源服务器的缓存控制

  • 客户端的缓存控制

  • 什么是跨域?浏览器如何拦截响应?如何解决?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值