【力扣】根据二叉树创建字符串

题目:

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

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

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/construct-string-from-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路:

利用先序遍历,先将root的值加入字符串,进入子树前添加'(',出子树的时候添加')'

如果右子树为空就加入空串

如果左子树为空需要分情况讨论

1、左子树为空,右子树也为空,则加入空串

2、左子树为空,右子树不为空,则需要加’()‘

代码:

class Solution {
public:
    void _tree2str(TreeNode* root,string& str)
    {
        if(root == nullptr)
        {
            str += "";
            return;
        }
        str += to_string(root->val);
        if(root->left)
        {
            str +='(';
            _tree2str(root->left,str);
            str +=')';
        }
        //左子树为空
        else
        {
            if(root->right)
            {
                str += "()";
            }
        }
        if(root->right)
        {
            str += '(';
            _tree2str(root->right,str);
            str +=')';
        }
    }
    string tree2str(TreeNode* root) 
    {
        string str;
        _tree2str(root,str);
        return str;
    }
};

你可能感兴趣的:(leetcode,算法,职场和发展)