java实现二叉树删除节点
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("----------------");
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律