Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

301
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda