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

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

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

解答

大体的遍历框架,然后拼字符串。

  1. /**
  2. * Definition for a binary tree node.
  3. * function TreeNode(val, left, right) {
  4. * this.val = (val===undefined ? 0 : val)
  5. * this.left = (left===undefined ? null : left)
  6. * this.right = (right===undefined ? null : right)
  7. * }
  8. */
  9. /**
  10. * @param {TreeNode} root
  11. * @return {string}
  12. */
  13. var tree2str = function(root) {
  14. function traverse (node, str = '') {
  15. if (!node) return '';
  16. str += node.val + '';
  17. if ((!node.left && node.right)) {
  18. str += '()'
  19. }
  20. if (node.left) {
  21. str += '('
  22. }
  23. str += traverse(node.left) || '';
  24. if (node.right) {
  25. str += '('
  26. }
  27. str += traverse(node.right) || '';
  28. str += ')';
  29. return str
  30. }
  31. const str = traverse(root, '');
  32. return str.slice(0, -1);
  33. };