τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
λύση
Ιδέες αλγορίθμων
Για να προσδιορίσουμε ποιο επίπεδο είναι η λίστα στη δομή δέντρου, μπορούμε να διασχίσουμε κάθε κόμβο αναδρομικά και να υπολογίσουμε το βάθος του. Συγκεκριμένα, για κάθε κόμβο, μπορούμε να διασχίσουμε τον γονικό κόμβο του προς τα πάνω μέχρι τον ριζικό κόμβο, ενώ συγκεντρώνουμε την τιμή του βάθους. Η τελική τιμή βάθους είναι το επίπεδο στο οποίο βρίσκεται ο κόμβος.
παράδειγμα κώδικα
Ακολουθεί ένα απλό παράδειγμα κώδικα Java για τον προσδιορισμό του επιπέδου ενός κόμβου σε μια δενδρική δομή:
public class TreeNode {
private int id;
private int parentId;
public TreeNode(int id, int parentId) {
this.id = id;
this.parentId = parentId;
}
public int getId() {
return id;
}
public int getParentId() {
return parentId;
}
}
public class TreeUtils {
public static int getLevel(TreeNode node, List<TreeNode> nodeList) {
int level = 1;
int parentId = node.getParentId();
while (parentId != 0) {
for (TreeNode n : nodeList) {
if (n.getId() == parentId) {
parentId = n.getParentId();
level++;
break;
}
}
}
return level;
}
}
public class Main {
public static void main(String[] args) {
List<TreeNode> nodeList = new ArrayList<>();
nodeList.add(new TreeNode(1, 0));
nodeList.add(new TreeNode(2, 1));
nodeList.add(new TreeNode(3, 1));
nodeList.add(new TreeNode(4, 2));
TreeNode node = nodeList.get(3);
int level = TreeUtils.getLevel(node, nodeList);
System.out.println("Node " + node.getId() + " is at level " + level);
}
}