返回

在乐享编程中,Python轻松攻克LeetCode 606:从二叉树构建字符串

后端

题目概述

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)

代码解析

  1. def dfs(node)::这是一个递归函数,用于遍历二叉树。它接受一个节点作为参数,并返回一个字符串,该字符串表示从该节点开始遍历二叉树的所有节点值,并按照特定的顺序连接而成。

  2. if not node::如果节点为空,则返回一个空字符串,因为没有节点可以遍历。

  3. node_str = str(node.val):将节点的值转换为字符串,并将其存储在node_str变量中。

  4. if node.left::如果节点存在左子树,则调用dfs函数来遍历左子树,并将左子树的字符串连接到node_str中。

  5. if node.right::如果节点存在右子树,则调用dfs函数来遍历右子树,并将右子树的字符串连接到node_str中。

  6. if not node.left::如果节点没有左子树,但在该节点的右子树之前需要一个空的字符串来保证连接顺序正确,那么在连接右子树字符串之前,需要在node_str中插入一个"()"。

  7. return dfs(root):调用dfs函数来遍历根节点,并将根节点的字符串返回作为最终结果。

结语

通过使用Python语言和DFS算法,我们轻松地解决了LeetCode 606:从二叉树构建字符串的问题。希望本文对你有帮助,祝你编程愉快!