2025-01-20 二叉树的删除
This commit is contained in:
parent
325dde088b
commit
cc4a8c06dc
@ -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("中序遍历:");
|
||||
|
Loading…
Reference in New Issue
Block a user