仍然是广度优先遍历
重构仍然需要队列。
var serialize = function(root) {
if(root==null){
return '[]'
}
let que = []
que.push(root)
let res = []
res.push(root.val)
while(que.length){
let temp = que.shift()
// temp.val.log//访问
if(temp.left){
res.push(temp.left.val)
}
else res.push('a')
if(temp.right){
res.push(temp.right.val)
}
else res.push('a')
if(temp.left){
que.push(temp.left)
}
if(temp.right){
que.push(temp.right)
}
}
return '['+res.toString()+']'
};
/**
* Decodes your encoded data to tree.
*
* @param {string} data
* @return {TreeNode}
*/
//利用队列que
var deserialize = function(data) {
if( data == '[]')
return null
let arr = data.substring(1,data.length-1).split(',')
let root = new TreeNode(arr.shift())
let que = [root]
while(arr.length){
let node = que.shift()
let left = arr.shift()
let right = arr.shift()
if(left!=='a'){
node.left = new TreeNode(left)
que.push(node.left)
}
if(right!=='a'){
node.right = new TreeNode(right)
que.push(node.right)
}
}
return root
};
/**
* Your functions will be called as such:
* deserialize(serialize(root));
*/