java實現二叉樹刪除節點
阿新 • • 發佈:2022-04-18
java實現二叉樹刪除節點
僅展示新增方法,全程式碼見前一章
節點類中
/** * 刪除節點 * * @param id 需要刪除節點的id */ public void delete(int id) { if (this.left != null && this.left.id == id) { this.left = null; return; } if (this.right != null && this.right.id == id) { this.right = null; return; } if (this.left != null) { this.left.delete(id); } if (this.right != null) { this.right.delete(id); } }
二叉樹類中
public void delete(int id) {
if (root == null) {
System.out.println("空樹");
return;
}
if (root.getId() == id) {
root = null;
return;
}
root.delete(id);
}
測試類
public class deleteNode { public static void main(String[] args) { BinaryTree binaryTree = new BinaryTree(); // 建立需要的節點 Node root = new Node(000); Node node01 = new Node(001); Node node02 = new Node(002); Node node03 = new Node(003); Node node04 = new Node(004); // 手動建立二叉樹 binaryTree.setRoot(root); root.setLeft(node01); root.setRight(node02); node02.setLeft(node03); node02.setRight(node04); System.out.println("刪除前"); binaryTree.preOrder(); System.out.println("----------------"); binaryTree.delete(000); System.out.println("刪除後"); binaryTree.preOrder(); System.out.println("----------------"); } }