2025-01-20 二叉树的删除

This commit is contained in:
liangjinglin 2025-01-20 21:01:14 +08:00
parent 325dde088b
commit cc4a8c06dc

View File

@ -34,6 +34,37 @@ public class BinaryTreeIterator {
}
}
private boolean deleteNode(TreeNode tempNode, int node){
boolean deleteFlag = false;
if (tempNode == null){
return false;
}
// 需要判断当前节点的左子节点是否为空因为二叉树是单向的所以不能直接判断当前节点
if(tempNode.left != null){
if(tempNode.left.node == node){
tempNode.left = null;
return true;
} else {
if(deleteNode(tempNode.left, node)){
return true;
}
}
}
// 需要判断当前节点的右子节点是否为空因为二叉树是单向的所以不能直接判断当前节点
if(tempNode.right != null){
if(tempNode.right.node == node){
tempNode.right = null;
return true;
} else {
if(deleteNode(tempNode.right, node)){
return true;
}
}
}
return deleteFlag;
}
private void forwardIterator(TreeNode treeNode){
if(treeNode == null){
System.out.println("当前节点为空");
@ -110,6 +141,13 @@ public class BinaryTreeIterator {
int[] arr = {7, 3, 10, 12, 5, 1, 9};
BinaryTreeIterator treeIterator = new BinaryTreeIterator();
treeIterator.transTree(arr);
/**
7
3 10
1 5 9 12
**/
boolean delFlag = treeIterator.deleteNode(treeIterator.root, 9);
System.out.println("删除结果:"+delFlag);
System.out.println("前序遍历:");
treeIterator.forwardIterator(treeIterator.root);
System.out.println("中序遍历:");