返回
在乐享编程中,Python轻松攻克LeetCode 606:从二叉树构建字符串
后端
2023-10-18 21:35:55
题目概述
LeetCode 606:从二叉树构建字符串
给定一棵二叉树,你需要从根节点开始,按照某种特定的顺序遍历二叉树,并将遍历过程中遇到的节点值连接成一个字符串。
解题思路
为了解决这个问题,我们将采用深度优先搜索(DFS)算法。DFS是一种遍历树形结构的经典算法,它可以帮助我们遍历二叉树的所有节点,并按照一定的顺序将节点值连接成字符串。
代码实现
def tree2str(root):
"""
:type root: TreeNode
:rtype: str
"""
def dfs(node):
if not node:
return ""
# 构建节点字符串
node_str = str(node.val)
# 如果左子树存在,构建左子树的字符串
if node.left:
node_str += "(" + dfs(node.left) + ")"
# 如果右子树存在,构建右子树的字符串
if node.right:
# 如果左子树不存在,需要在右子树字符串前加"()"
if not node.left:
node_str += "()"
node_str += "(" + dfs(node.right) + ")"
return node_str
return dfs(root)
代码解析
-
def dfs(node):
:这是一个递归函数,用于遍历二叉树。它接受一个节点作为参数,并返回一个字符串,该字符串表示从该节点开始遍历二叉树的所有节点值,并按照特定的顺序连接而成。 -
if not node:
:如果节点为空,则返回一个空字符串,因为没有节点可以遍历。 -
node_str = str(node.val)
:将节点的值转换为字符串,并将其存储在node_str
变量中。 -
if node.left:
:如果节点存在左子树,则调用dfs
函数来遍历左子树,并将左子树的字符串连接到node_str
中。 -
if node.right:
:如果节点存在右子树,则调用dfs
函数来遍历右子树,并将右子树的字符串连接到node_str
中。 -
if not node.left:
:如果节点没有左子树,但在该节点的右子树之前需要一个空的字符串来保证连接顺序正确,那么在连接右子树字符串之前,需要在node_str
中插入一个"()"。 -
return dfs(root)
:调用dfs
函数来遍历根节点,并将根节点的字符串返回作为最终结果。
结语
通过使用Python语言和DFS算法,我们轻松地解决了LeetCode 606:从二叉树构建字符串的问题。希望本文对你有帮助,祝你编程愉快!