【问题标题】:Binary Search Tree serialization formatting二叉搜索树序列化格式
【发布时间】:2018-06-29 01:21:03
【问题描述】:

我创建了一个函数来序列化二叉排序树。我正在按顺序遍历树,所以 Root -> Left -> Right 并递归地构建一个字符串。

function serialize(root, str = '') {
    if (root !== undefined) {
        str += root.data + ', ' + serialize(root.left) + serialize(root.right);
        return str;
    } else {
        return '';
    }
}

我的输出是"8, 3, 1, 6, 4, 7, 10, 14, 13, ",我正在尝试找出一种方法来删除尾随的,whitespace

【问题讨论】:

    标签: javascript algorithm serialization binary-search-tree


    【解决方案1】:

    在递归调用 serialize 之前,您需要检查您的节点是否有左叶或右叶,它可以解决您的问题。

    function serialize(root, str = '') {
        if (root) {
            str += root.data;
            if (root.left) {
                str += ', ' + serialize(root.left);
            }
            if (root.right) {
                str += ', ' +  serialize(root.right);
            }
        } 
        return str;
    }
    

    【讨论】:

    • 在执行这些解决方案的同时将所有内容保持在相同的功能中,有什么好方法?递归部分似乎有干扰。
    【解决方案2】:

    使用str.trim() 删除whitespace,

    【讨论】:

      【解决方案3】:

      给你。

      您必须先使用str.trim() 删除最后一个空格,然后使用str.substring() 删除最后一个逗号。

      下面是完整的工作代码:

      var str = "8, 3, 1, 6, 4, 7, 10, 14, 13, ";
      
      str = str.trim();
      
      console.log(str.substring(0, str.length - 1));

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-08
        • 1970-01-01
        相关资源
        最近更新 更多