【发布时间】:2014-06-30 02:54:41
【问题描述】:
输入是具有空值的预序列化 BST。这些值已被读入具有整数和空值的数组。
示例输入
[ 6, 3, null, null, 8, null, 9, null, null ]
想要的输出
{ _root:
{ value: 6,
left: { value: 3,
left: null,
right: null },
right: { value: 8,
left: null,
right: { value: 9,
left: null,
right: null } } } }
这是 BST 的基本界面:
function BinarySearchTree() {
this._root = null;
}
BinarySearchTree.prototype = {
//restore constructor
constructor: BinarySearchTree,
insert: function(value) {
//create a new item object, place data in
var node = {
value: value,
left: null,
right: null
},
current;
// more code (works, but omitted for this question)
}
};
我们如何反序列化上述输入,从而得到一个 BinarySearchTree?这会是沿着这些路线的递归前序遍历吗?
function deserialize(arr) {
var result = new BinarySearchTree();
result._root = arr[0];
if (arr[1] === null) {
result._root.left = null;
}
if () {
return null;
}
node.left = deserialize(arr);
node.right = deserialize(arr);
return result;
}
【问题讨论】:
标签: javascript algorithm deserialization binary-search-tree