Technologieaustausch

So bestimmen Sie die Ebene einer Java-Baumstrukturliste

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Lösung
Ideen für Algorithmen
Um zu bestimmen, auf welcher Ebene sich die Liste in der Baumstruktur befindet, können wir jeden Knoten rekursiv durchlaufen und seine Tiefe berechnen. Konkret können wir für jeden Knoten seinen übergeordneten Knoten nach oben bis zum Wurzelknoten durchlaufen und dabei den Tiefenwert akkumulieren. Der endgültige Tiefenwert ist die Ebene, auf der sich der Knoten befindet.

Codebeispiel
Im Folgenden finden Sie ein einfaches Java-Codebeispiel zur Bestimmung der Ebene eines Knotens in einer Baumstruktur:

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);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50