Buenas, necesito que me ayuden con un algoritmo que no le puedo encontrar la vuelta. Tengo un json de categorias, donde tiene como atributos el id, el nombre y el padre.
Necesito armar otro json pero con los datos en forma de arbol. Pero la cuestion es que tendria q ser algo recursivo supongo, xq yo no se cuantos niveles de profundidad va a tener el arbol. Le muestro el json que tengo y pongo un ejemplo de lo q quisiera obtener.
El json que tengo
[{"id":1384417,"nombre":"HERRAMIENTAS EL\u00c9CTRICAS","padre":0},
{"id":1384418,"nombre":"Amoladoras","padre":1384417},
{"id":1384419,"nombre":"Aspiradoras\/Sopladores de Hojas","padre":1384417},
{"id":1384420,"nombre":"Atornilladores","padre":1384417},
{"id":1384423,"nombre":"Cepillos","padre":1384417},
{"id":1384424,"nombre":"Cortacercos","padre":1384417},
{"id":1384425,"nombre":"Electrosierras","padre":1384417},
{"id":1384444,"nombre":"Estaci\u00f3n de Inflado","padre":1384417},
{"id":1384445,"nombre":"Herramientas Estacionarias","padre":1384417},
{"id":1384446,"nombre":"Taladros de Banco","padre":1384445},
{"id":1384447,"nombre":"Sierras Ingleteadoras","padre":1384445},
{"id":1384448,"nombre":"Sierras de Banco","padre":1384445},
{"id":1384449,"nombre":"Lijadoras","padre":1384417},
{"id":1384450,"nombre":"De Banda","padre":1384449},
{"id":1384451,"nombre":"Orbitales","padre":1384449},
{"id":1384452,"nombre":"Llaves de Impacto","padre":1384417},
{"id":1384453,"nombre":"Martillos","padre":1384417},
{"id":1384454,"nombre":"Con Rotaci\u00f3n","padre":1384453},
{"id":1384455,"nombre":"Sin Rotaci\u00f3n","padre":1384453},
{"id":1384456,"nombre":"Pistolas de Calor","padre":1384417},
{"id":1384457,"nombre":"Pulidoras","padre":1384417},
{"id":1384458,"nombre":"Routers","padre":1384417},
{"id":1384459,"nombre":"Sierras","padre":1384417},
{"id":1384460,"nombre":"Taladros","padre":1384417},
{"id":1384461,"nombre":"Con Percusi\u00f3n","padre":1384460},
{"id":1384462,"nombre":"Sin percusi\u00f3n","padre":1384460},
{"id":1384464,"nombre":"Tornos Manuales","padre":1384417},
{"id":1508300,"nombre":"HERRAMIENTAS A BATER\u00cdA","padre":0},
{"id":1508315,"nombre":"Atornilladores","padre":1508300},
{"id":1384463,"nombre":"Taladros","padre":1508300},
{"id":1384426,"nombre":"HERRAMIENTAS A EXPLOSI\u00d3N","padre":0},
{"id":1384465,"nombre":"Desmalezadoras","padre":1384426},
{"id":1384466,"nombre":"Grupos Electr\u00f3genos","padre":1384426},
{"id":1384467,"nombre":"Motosierras","padre":1384426},
{"id":1384427,"nombre":"HIDROLAVADORAS EL\u00c9CTRICAS","padre":0},
{"id":1384471,"nombre":"NIVELES L\u00c1SER","padre":0},
{"id":1384472,"nombre":"LINTERNAS RECARGABLES","padre":0},
{"id":1384428,"nombre":"ACCESORIOS Y ELECTR\u00d3NICOS","padre":0},
{"id":1384468,"nombre":"Bater\u00edas","padre":1384428},
{"id":1384469,"nombre":"Cargadores de Bater\u00eda","padre":1384428},
{"id":1384470,"nombre":"Conservadoras","padre":1384428},
{"id":1384473,"nombre":"Para Compresores","padre":1384428}]
Y yo quisiera obtener algo asi.
[{"id":1384417,"nombre":"HERRAMIENTAS EL\u00c9CTRICAS","padre":0,
"hijos":[{"id":1384418,"nombre":"Amoladoras","padre":1384417}
,{"id":1384419,"nombre":"Aspiradoras","padre":1384417}
,{"id":1384420,"nombre":"Atornilladores","padre":1384417}]}
,{"id":1384471,"nombre":"NIVELES L\u00c1SER","padre":0}]
El lenguaje en el cual me puedan ayudar me es indiferente, yo lo haria con javascript o php, pero da lo mismo.
Espero que se entienda y me puedan ayudar. Muchas Gracias