首页 > 大数据 > 数据分析 > 现金盘系统制作数据结构
public Node add(Node node , int add) {现金盘系统制作q<115.28.8.00.9.9>
//若遍历到空节点,node == null,则node == add
//若add < node, 则递归其左子树
//若add > node, 则递归其右子树
//若add = node, 则直接返回
if (node!=null){
if (add > node.getContent()){
node.setRight(add(node.getRight(),add));
return node;
} else if (add < node.getContent()) {
node.setLeft(add(node.getLeft(),add));
return node;
}else {
return node;
}
}else {
node = new Node(add,null,null);
return node;
}
}
public Node delete(Node node , int delete) {
//若待删除元素小于当前节点,则递归删除左子树
//若待删除元素大于当前节点,则递归删除右子树
//若待删除元素等于当前节点,则:
// 1) 若当前节点为叶子节点,则直接返回null
// 2) 若当前节点仅有一个儿子,则返回当前节点的儿子
// 3)若当前节点有两个儿子,则让其右子树最小元素的值替换该节点的值,然后在其右子树中递归删除最小节点
if(node == null){
throw new RuntimeException("树中不包含该元素");
}else if (delete < node.getContent()) {
node.setLeft(delete(node.getLeft(),delete));
return node;
}else if (delete > node.getContent()) {
node.setRight(delete(node.getRight(),delete));
return node;
}else {
if (node.getLeft() == null && node.getRight() == null){
return null;
}else if (node.getLeft() == null || node.getRight() == null){
return node.getLeft() == null? node.getRight():node.getLeft();
}else {
Node rightMin = findMin(node.getRight());
node.setContent(rightMin.getContent());
node.setRight(delete(node.getRight(),rightMin.getContent()));
return node;
}
}
}
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69948739/viewspace-2657458/ ,如需转载,请注明出处,否则将追究法律责任。