gpt4 book ai didi

javascript - 如何在javascript中从数组制作二叉树?

转载 作者:行者123 更新时间:2023-11-29 10:29:49 26 4
gpt4 key购买 nike

我有一个数组 var array = [8,10,12,5,3,6];

逻辑

  1. 第一个节点将是根节点。
  2. 如果新节点值小于或等于=<比父节点,就是父节点的左节点
  3. 如果新节点值大于>比父节点,就是父节点的右节点

我正在尝试实现如下对象的输出:

{
value:8,
left:{
value:5,
left:{ value:3 },
right:{value:6}
},
right:{
value:10,
right:{value:12}
}
}

像这样的图片

enter image description here

我试过下面的代码:

var arr = [8,10,12,5,3,6];
var root = arr[0];
var rv = {};
for (var i = 0; i < arr.length; i++){
if(arr[i] < root){
rv.left = arr[i];
}else{
rv.right = arr[i];
}
}
console.log(rv);

请帮我解决这个问题。

最佳答案

您可以为新节点使用 Node 实例,并为插入节点使用函数。

然后迭代这些值并构建一棵新树。

function Node(value) {
this.value = value;
// this.left = null;
// this.right = null;
}

function insertNode(tree, value) {
var node = tree,
key;
while (node.value !== value) {
key = value < node.value ? 'left' : 'right';
if (!node[key]) {
node[key] = new Node(value);
break;
}
node = node[key];
}
return tree;
}

var array = [8, 10, 12, 5, 3, 6],
tree = array.reduce((t, v) => t ? insertNode(t, v) : new Node(v), null);

console.log(tree);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 如何在javascript中从数组制作二叉树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48744012/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com