色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java樹的插入和刪除

錢琪琛1年前6瀏覽0評論

Java中的樹結構是一種非常常用的數據結構,它可以用來描述許多實際問題的模型,如文件系統和公司組織結構等。樹結構的基本操作有插入和刪除,下面我們就來介紹這兩個操作的實現。

首先,我們需要定義一個樹節點類,該類包含節點值、左右子節點等信息。代碼如下:

class TreeNode {
int val;
TreeNode left, right;
public TreeNode(int val) {
this.val = val;
left = right = null;
}
}

插入操作的實現非常簡單,只需要從根節點開始遞歸查找空余的子節點位置即可,然后插入新的節點。代碼如下:

public static void insert(TreeNode root, int val) {
if (root == null) {
root = new TreeNode(val);
return;
}
if (val< root.val) {
if (root.left == null)
root.left = new TreeNode(val);
else
insert(root.left, val);
}
else {
if (root.right == null)
root.right = new TreeNode(val);
else
insert(root.right, val);
}
}

刪除操作稍微復雜一些,在Java中樹節點的刪除分為三種情況,分別是:節點沒有子節點、節點只有一棵子樹和節點有兩棵子樹。我們需要根據不同的情況來進行處理。

第一種情況很簡單,只需要將要刪除的節點的父節點的指針指向null即可。第二種情況需要將要刪除的節點的子樹替換到該節點的位置上,第三種情況需要用該節點的后繼節點(即右子樹的最小值)替換該節點。代碼如下:

public static TreeNode delete(TreeNode root, int key) {
if (root == null)
return null;
if (key< root.val)
root.left = delete(root.left, key);
else if (key >root.val)
root.right = delete(root.right, key);
else {
if (root.left == null)
return root.right;
else if (root.right == null)
return root.left;
TreeNode tmp = root.right;
while (tmp.left != null)
tmp = tmp.left;
root.val = tmp.val;
root.right = delete(root.right, tmp.val);
}
return root;
}

以上就是Java中樹的插入和刪除操作的實現了。需要注意的是,在實際應用中,我們可能還需要考慮樹的平衡性等因素,來保證樹的高效運行。