diff --git a/src/dataANDcalc/java/tree/BinaryTreeIterator.java b/src/dataANDcalc/java/tree/BinaryTreeIterator.java index 6a5f6e3..73992ff 100644 --- a/src/dataANDcalc/java/tree/BinaryTreeIterator.java +++ b/src/dataANDcalc/java/tree/BinaryTreeIterator.java @@ -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("中序遍历:");