每日一题 - 简单 - 以字符串输出二叉树(606)

118 阅读1分钟

题目606:

类型难度:字符串-简单

给你二叉树的根节点 `root` ,请你采用前序遍历的方式,将二叉树转化为一个由括号和整数组成的字符串,返回构造出的字符串。

空节点使用一对空括号对 `"()"` 表示,转化后需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。

示例 1:

Snipaste_2022-11-04_10-11-43.png

输入:root = [1,2,3,4]
输出:"1(2(4))(3)"
解释:初步转化后得到 "1(2(4)())(3()())" ,但省略所有不必要的空括号对后,字符串应该是"1(2(4))(3)" 。

🙇‍♂️ 感想: 只是一道相对比较简单的二叉树的题目,虽然力扣归结到了字符串的类型中。二叉树常规操作就是递归题

🙇‍♂️ 解题思路:本题是希望二叉树前序遍历以字符串的方式输出。首先前序遍历是根-左-右,且如果存在左右子树都会用()包围起来。如果没有左子树存在右子树的情况,为了正确输出,应该先输入一个空括号,要考虑到这个特殊情况。

function tree2str(root: TreeNode | null): string {
  if (!root) return '()'
  let result: string = root.val+''
  if (root.left) {
    result += `(${tree2str(root.left)})`
  }
  if (root.right) {
    if (!root.left) {
      result += '()'
    }
    result += `(${tree2str(root.right)})`
  }
  return result
};