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