From cc4a8c06dcb289c93537ebe4482c6f7fddb5fc04 Mon Sep 17 00:00:00 2001 From: liangjinglin Date: Mon, 20 Jan 2025 21:01:14 +0800 Subject: [PATCH] =?UTF-8?q?2025-01-20=20=E4=BA=8C=E5=8F=89=E6=A0=91?= =?UTF-8?q?=E7=9A=84=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/tree/BinaryTreeIterator.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) 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("中序遍历:");