Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

302
Vistas
binary tree and arrays problem. Anyone can help me to find solution?

Visual representation how binary tree look

const cities = [

    {
      _id: "A01",
      name: "London",
      ancestors: [],
      children: ["A02", "A27"],
      parent: null
    },
    {
      _id: "A02",
      name: "Venezia",
      ancestors: ["A01"],
      children: ["A03", "A15"],
      parent: "A01"
    },
    {
      _id: "A03",
      name: "Barcelona",
      ancestors: ["A01", "A02"],
      children: ["A04", "A07"],
      parent: "A02"
    },
    {
      _id: "A04",
      name: "Atina",
      ancestors: ["A01", "A02", "A03"],
      children: [],
      parent: "A03"
    },
    {
      _id: "A07",
      name: "Lisabon",
      ancestors: ["A01", "A02", "A03"],
      children: [],
      parent: "A03"
    },
    {
      _id: "A15",
      name: "New York",
      ancestors: ["A01", "A02"],
      children: ["A16", "A17"],
      parent: "A02"
    },
    {
      _id: "A16",
      name: "Pariz",
      ancestors: ["A01", "A02", "A15"],
      children: [],
      parent: "A15"
    },
    {
      _id: "A17",
      name: "Madrid",
      ancestors: ["A01", "A02", "A15"],
      children: [],
      parent: "A15"
    },
    { _id: "A27", 
    name: "Rim", 
    ancestors: ["A01"], 
    children: [], 
    parent: "A01" 
    }
  ];
  
  const stud = "A03";
  //make array which contains elemnet with this id and his ancestors then show names as elements (list-items) in HTML

  const nbg = "A02";
  // make array which contains element with this id and descendants (direct and indirect) then show names as elements (list-items) in HTML

In HTML page I have 2 div

<div id="nbg"></div>
<div id="stud"></div>

This is solution list – item output resault:

London
Rim
Venezia
New York
Barcelona
Atina
Pariz
Lisabon
Mardid
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

You can have two recursive functions for each task (finding ancestors and finding descendants).

Try like below.

const cities = [ { _id: "A01", name: "London", ancestors: [], children: ["A02", "A27"], parent: null, }, { _id: "A02", name: "Venezia", ancestors: ["A01"], children: ["A03", "A15"], parent: "A01", }, { _id: "A03", name: "Barcelona", ancestors: ["A01", "A02"], children: ["A04", "A07"], parent: "A02", }, { _id: "A04", name: "Atina", ancestors: ["A01", "A02", "A03"], children: [], parent: "A03", }, { _id: "A07", name: "Lisabon", ancestors: ["A01", "A02", "A03"], children: [], parent: "A03", }, { _id: "A15", name: "New York", ancestors: ["A01", "A02"], children: ["A16", "A17"], parent: "A02", }, { _id: "A16", name: "Pariz", ancestors: ["A01", "A02", "A15"], children: [], parent: "A15", }, { _id: "A17", name: "Madrid", ancestors: ["A01", "A02", "A15"], children: [], parent: "A15", }, { _id: "A27", name: "Rim", ancestors: ["A01"], children: [], parent: "A01" }, ];

const stud = "A03";
//make array which contains elemnet with this id and his ancestors then show names as elements (list-items) in HTML

const nbg = "A02";
// make array which contains element with this id and descendants (direct and indirect) then show names as elements (list-items) in HTML

const findCity = (cities, id) => {
  return cities.find((city) => city._id === id);
};

// find ancestor city names starting from node with id
const findAncestors = (cities, id) => {
  let cityNames = new Set();
  const city = findCity(cities, id);
  city.ancestors.forEach((cityId) => {
    const ancestorCity = findCity(cities, cityId);
    cityNames.add(ancestorCity.name);
    cityNames = new Set([
      ...cityNames,
      ...findAncestors(cities, ancestorCity._id),
    ]);
  });

  return cityNames;
};

// find descendant city names starting from node with id
const findDescendants = (cities, id) => {
  let cityNames = new Set();
  const city = findCity(cities, id);
  city.children.forEach((cityId) => {
    const descendantCity = findCity(cities, cityId);
    cityNames.add(descendantCity.name);
    cityNames = new Set([
      ...cityNames,
      ...findDescendants(cities, descendantCity._id),
    ]);
  });

  return cityNames;
};

console.log("ancestors");
console.log(Array.from(findAncestors(cities, stud)));
console.log("descendants");
console.log(Array.from(findDescendants(cities, nbg)));

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda