【发布时间】:2018-06-14 03:42:28
【问题描述】:
我尝试使用以下代码创建 BST,nums = [4,5,8,2]
var TreeNode = function (val) {
this.val = val;
this.left = this.right = null;
this.count = 1;
}
var constructBST = function(nums) {
if (nums.length === 0) return null;
let root = new TreeNode(nums[0]);
for (let i = 1; i < nums.length; i++) {
let currentNode = root;
while (currentNode) {
if (currentNode.val > nums[i]) {
currentNode = currentNode.left;
} else if (currentNode.val < nums[i]) {
currentNode = currentNode.right;
}
}
currentNode = new TreeNode(nums[i]);
}
console.log(root);
return root;
}
我每次迭代都将root作为当前节点,并根据值移动currentNode,但是当我迭代数组后打印出root时,为什么我的root节点没有改变?
这是输出:
TreeNode { val: 4, right: null, left: null, count: 1 }、
编辑:假设我有一个根节点 3,并且它没有子节点,当我将当前节点设置为根时,如果我移动 currentNode = currentNode.left; 这不是表示 currentNode 和 root 之间有连接吗?我认为 currentNode 现在将代表 root 的左孩子。如果我对 currentNode 进行任何更改,根的左孩子也会发生变化
【问题讨论】:
-
问题似乎是当您在树中正确导航时,新创建的节点实际上并未连接到树。
标签: javascript algorithm binary-search-tree