606. Construct String from Binary Tree - Medium

前往題目

想法

  • Preorder的順序,然後在數字左右加上括號

思路

  1. Preorder順序
  2. 刻意跳過leaf的左右子節點,否則會加無謂的括號
  3. 建立左子樹
  4. 建立右子樹,但只有右子樹不為空才建立

Code

第一次寫出來沒考慮到遇到leaf要直接回傳,否則會加入空的括號

class Solution {
    StringBuilder res;
    public String tree2str(TreeNode root) {
        res = new StringBuilder("");
        build(root);
        return res.toString();
    }

    private void build(TreeNode node) {
        if (node == null) return;

        res.append(node.val);
        
        // return at leaf
        if (node.left == null && node.right == null) return;

        // Build left
        res.append("(");
        build(node.left);
        res.append(")");

        // Build right only if it's not null
        if (node.right != null) {     
            res.append("(");
            build(node.right);
            res.append(")");
        }
    }
}

606. Construct String from Binary Tree - Medium
https://f88083.github.io/2024/10/23/606-Construct-String-from-Binary-Tree-Medium/
作者
Simon Lai
發布於
2024年10月23日
許可協議