Bäume und Diagramme in Java verstehen: Erkundung der Anwendung und Implementierung nichtlinearer Datenstrukturen
class Node { int data; Node left; Node right; public Node(int item) { data = item; left = right = null; } } class BinarySearchTree { Node root; public BinarySearchTree() { root = null; } public void insert(int data) { root = insertRec(root, data); } private Node insertRec(Node root, int data) { if (root == null) { root = new Node(data); return root; } if (data < root.data) root.left = insertRec(root.left, data); else if (data > root.data) root.right = insertRec(root.right, data); return root; } public boolean search(int data) { return searchRec(root, data); } private boolean searchRec(Node root, int data) { if (root == null) return false; if (data == root.data) return true; if (data < root.data) return searchRec(root.left, data); return searchRec(root.right, data); } } public class Main { public static void main(String[] args) { BinarySearchTree bst = new BinarySearchTree(); bst.insert(50); bst.insert(30); bst.insert(70); bst.insert(20); bst.insert(40); bst.insert(60); bst.insert(80); System.out.println("Is 20 present? " + bst.search(20)); System.out.println("Is 100 present? " + bst.search(100)); } }
Im obigen Beispiel haben wir eine Node-Klasse definiert, um die Knoten des Binärbaums darzustellen, und die BinarySearchTree-Klasse, um den binären Suchbaum darzustellen. Wir können die Methode insert verwenden, um Elemente in den Baum einzufügen, und die Methode search, um nach Elementen zu suchen.
import java.util.*; class Graph { private int V; private LinkedList<Integer>[] adjList; public Graph(int v) { V = v; adjList = new LinkedList[v]; for (int i = 0; i < v; ++i) adjList[i] = new LinkedList(); } void addEdge(int v, int w) { adjList[v].add(w); } void BFS(int s) { boolean[] visited = new boolean[V]; LinkedList<Integer> queue = new LinkedList<Integer>(); visited[s] = true; queue.add(s); while (queue.size() != 0) { s = queue.poll(); System.out.print(s + " "); Iterator<Integer> i = adjList[s].listIterator(); while (i.hasNext()) { int n = i.next(); if (!visited[n]) { visited[n] = true; queue.add(n); } } } } } public class Main { public static void main(String args[]) { Graph g = new Graph(4); g.addEdge(0, 1); g.addEdge(0, 2); g.addEdge(1, 2); g.addEdge(2, 0); g.addEdge(2, 3); g.addEdge(3, 3); System.out.println("BFS traversal starting from vertex 2:"); g.BFS(2); } }
Im obigen Beispiel verwenden wir Adjazenzverknüpfte Listen, um die Datenstruktur des Diagramms darzustellen. Wir definieren die Graph-Klasse, in der die addEdge-Methode zum Hinzufügen von Kanten und die BFS-Methode zum Durchführen einer Breitensuchdurchquerung verwendet wird. Im Beispiel führen wir einen BFS-Durchlauf ab Scheitelpunkt 2 durch und geben die Durchlaufreihenfolge aus.
Das obige ist der detaillierte Inhalt vonEingehende Untersuchung der Anwendungs- und Implementierungsmethoden nichtlinearer Datenstrukturen von Bäumen und Diagrammen in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!