gpt4 book ai didi

php - 将二叉树编码为Json

转载 作者:可可西里 更新时间:2023-10-31 23:40:35 25 4
gpt4 key购买 nike

我在我的数据库中存储了一堆数据以在 html Canvas 中绘制二叉树


身份证号码/姓名

1个苹果

2 只蜜蜂

3咖啡馆

4 钻石

8 东

9 游戏

16 爱好


这里,idx 表示项目在二叉树中的位置。所以上面的数据在树中看起来像这样


               1.Apple
/ \
2.Bee 3.Cafe
/
4.Diamond
/ \
8.East 9.Game
/
16.Hobby

现在,我需要将该数据库行编码为 json 格式:

{
id: "1",
name: "Apple",
data: {},
children: [{
id: "2",
name: "Bee",
data: {},
children: [{
id: "4",
name: "Diamond",
data: {},
children: [{
// East/Game/Hobby comes here in the same manner...
}]
}]
},
{
id: "3",
name: "Cafe",
data: {},
children: [] // has no children
}]
}

我尝试过的是创建一个数组数组并通过获取一个谷并将其放入其父数组并将其从数组中删除来按降序排列所有值。所以,我的伪代码是这样的......

nodeArray = [1,2,3,4,8,9,16];  <-each node is an object with needed data contained.
treeArray = [........] <- arrays with key=>each index / value=>empty
while(nodeArray size is larger than 1) // 1 = the top most value
{
grab the last node from nodeArray
parent_idx = (int)(last one id / 2)
push the last node into the treeArray[parent_idx]
pop the used index
}

Then, I will have treeArray something like this

treeArray = [
1:[2,3]
2:[4]
4:[8,9]
8:[16]
]

...这不是我要找的数组转换二叉树。

因此,我需要按降序遍历 treeArray 并重新定位它们……是的。我知道我在这里搞砸了:(它变得越来越复杂,越来越难以理解。

有没有更优雅、更简单的方法呢? :(

最佳答案

我最终使用 javascript 循环遍历每个节点并调用以下函数

var objlist = {};
function buildTree(id, parent_id, data)
{
if(id in objlist) alert("It already exists!");
objlist[id] = { id: id, data: data, children: [] };
if (parent_id in objlist)
{
objlist[parent_id].children.push(objlist[id]);
}
}

其中 parent_id 是 id/2。

关于php - 将二叉树编码为Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23378881/

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