Memahami Pokok dan Graf di Jawa: Meneroka Aplikasi dan Pelaksanaan Struktur Data Tak Linear
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)); } }
Dalam contoh di atas, kami mentakrifkan kelas Nod untuk mewakili nod pepohon binari dan kelas BinarySearchTree untuk mewakili pepohon carian perduaan. Kita boleh menggunakan kaedah sisip untuk memasukkan unsur ke dalam pokok dan kaedah carian untuk mencari unsur.
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); } }
Dalam contoh di atas, kami menggunakan senarai terpaut bersebelahan untuk mewakili struktur data graf. Kami mentakrifkan kelas Graf, di mana kaedah addEdge digunakan untuk menambah tepi dan kaedah BFS digunakan untuk melakukan traversal carian pertama luas. Dalam contoh, kami melakukan traversal BFS bermula dari bucu 2 dan mencetak susunan traversal.
Atas ialah kandungan terperinci Penerokaan mendalam tentang kaedah aplikasi dan pelaksanaan struktur data bukan linear pepohon dan graf dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!