Node节点的定义
/**
* Definition for a binary tree node.*/
function TreeNode(val) {
this.val = val;
this.left = this.right = null;
}
模拟先序遍历,一个一个复制, 从根节点开始
错误版本:
// 错误,js里面不存在传递地址引用
var copyBinaryTree = (node, newTree = null) => {
if (root === null) {
return null
} else {
let newNode = new TreeNode(tree.val)
newTree = newNode
copyBinaryTree(root.left, newTree.left)
copyBinaryTree(root.right, newTree.right)
return newTree
}
}
正确版本:
var copyBinaryTree = (rootTreeNode) => {
var helpFunc = (node, newNode, type) => {
if (node === null) {
return null
} else {
let n = new TreeNode(node.val)
if (type === undefined || type === null) {
newNode = n
} else {
newNode[type] = n
newNode = newNode[type]
}
helpFunc(node.left, newNode, 'left')
helpFunc(node.right, newNode, 'right')
return n
}
}
return helpFunc(rootTreeNode)
}