二进制搜索树序列化格式

时间:2018-06-29 01:21:03

标签: javascript algorithm serialization binary-search-tree

我创建了一个序列化二进制排序树的函数。我正在按顺序遍历树,因此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的方法。

3 个答案:

答案 0 :(得分:2)

在递归调用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;
}

答案 1 :(得分:0)

使用str.trim()删除whitespace,

答案 2 :(得分:0)

您在这里。

您必须先使用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));