深度优先搜索

深度优先搜索算法(英语:Depth-First-Search,DFS)是一种用于遍历或搜索树或图的算法。其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次.

因发明「深度优先搜索算法」,约翰 · 霍普克洛夫特与罗伯特 · 塔扬在1986年共同获得计算机领域的最高奖:图灵奖。

「一条路走到底,不撞南墙不回头」是对「深度优先遍历」的最直观描述。

回溯算法

验证二叉搜索树

给你一个二叉树的根节点root ,判断其是否是一个有效的二叉搜索树。

有效 二叉搜索树定义如下:

  • 节点的左子树只包含 小于 当前节点的数。
  • 节点的右子树只包含 大于 当前节点的数。
  • 所有左子树和右子树自身必须也是二叉搜索树。

输入:root = [2,1,3]
输出:true

输入:root = [5,1,4,null,null,3,6]
输出:false
解释:根节点的值是 5 ,但是右子节点的值是 4 。

提示:

  • 树中节点数目范围在[1, 10<sup>4</sup>]
  • -2<sup>31</sup> <= Node.val <= 2<sup>31</sup> - 1

序列化和反序列化二叉搜索树

序列化是将数据结构或对象转换为一系列位的过程,以便它可以存储在文件或内存缓冲区中,或通过网络连接链路传输,以便稍后在同一个或另一个计算机环境中重建。

设计一个算法来序列化和反序列化 二叉搜索树 。 对序列化/反序列化算法的工作方式没有限制。 您只需确保二叉搜索树可以序列化为字符串,并且可以将该字符串反序列化为最初的二叉搜索树。

编码的字符串应尽可能紧凑。

1
2
输入:root = [2,1,3]
输出:[2,1,3]
1
2
输入:root = []
输出:[]

提示:

  • 树中节点数范围是** **[0, 10<sup>4</sup>]
  • 0 <= Node.val <= 10<sup>4</sup>
  • 题目数据** **保证 输入的树是一棵二叉搜索树。
作者

JIeJaitt

发布于

2020-09-04

更新于

2024-09-07

许可协议

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×