From 325dde088b5cf3049f2adf5e5b07213a78f3b1a9 Mon Sep 17 00:00:00 2001 From: liangjinglin Date: Mon, 20 Jan 2025 20:13:21 +0800 Subject: [PATCH] =?UTF-8?q?2025-01-19=20=E4=BA=8C=E5=8F=89=E6=A0=91?= =?UTF-8?q?=E7=9A=84=E9=81=8D=E5=8E=86=E6=90=9C=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...eIterator.java => BinaryTreeIterator.java} | 4 +- .../java/tree/BinaryTreeSearch.java | 157 ++++++++++++++++++ 2 files changed, 159 insertions(+), 2 deletions(-) rename src/dataANDcalc/java/tree/{TreeIterator.java => BinaryTreeIterator.java} (96%) create mode 100644 src/dataANDcalc/java/tree/BinaryTreeSearch.java diff --git a/src/dataANDcalc/java/tree/TreeIterator.java b/src/dataANDcalc/java/tree/BinaryTreeIterator.java similarity index 96% rename from src/dataANDcalc/java/tree/TreeIterator.java rename to src/dataANDcalc/java/tree/BinaryTreeIterator.java index e53613a..6a5f6e3 100644 --- a/src/dataANDcalc/java/tree/TreeIterator.java +++ b/src/dataANDcalc/java/tree/BinaryTreeIterator.java @@ -1,6 +1,6 @@ package tree; -public class TreeIterator { +public class BinaryTreeIterator { private TreeNode root; @@ -108,7 +108,7 @@ public class TreeIterator { public static void main(String[] args) { int[] arr = {7, 3, 10, 12, 5, 1, 9}; - TreeIterator treeIterator = new TreeIterator(); + BinaryTreeIterator treeIterator = new BinaryTreeIterator(); treeIterator.transTree(arr); System.out.println("前序遍历:"); treeIterator.forwardIterator(treeIterator.root); diff --git a/src/dataANDcalc/java/tree/BinaryTreeSearch.java b/src/dataANDcalc/java/tree/BinaryTreeSearch.java new file mode 100644 index 0000000..f6dd2b4 --- /dev/null +++ b/src/dataANDcalc/java/tree/BinaryTreeSearch.java @@ -0,0 +1,157 @@ +package tree; + +public class BinaryTreeSearch { + + private TreeNode root; + + private void transTree(int[] arr){ + for (int i = 0; i < arr.length; i++) { + TreeNode treeNode = new TreeNode(arr[i]); + addNode(root, treeNode); + } + } + + private void addNode(TreeNode tempNode, TreeNode treeNode){ + if(root == null){ + root = treeNode; + return; + } + + if(treeNode.nodetempNode.node){ + if (tempNode.right == null){ + tempNode.right = treeNode; + } else { + addNode(tempNode.right, treeNode); + } + } + } + + private TreeNode forwardSearch(TreeNode treeNode, int node){ + TreeNode resultNode = null; + if(treeNode == null){ + System.out.println("当前节点为空"); + return null; + } + + if(treeNode.node == node){ + System.out.println("已找到treeNode:"+ treeNode.toString()); + resultNode = treeNode; + return resultNode; + } + System.out.println("当前treeNode为:"+ treeNode.toString()); + + if (treeNode.left != null){ + resultNode = forwardSearch(treeNode.left, node); + } + + if(resultNode != null){ + return resultNode; + } + + if (treeNode.right!= null){ + resultNode = forwardSearch(treeNode.right, node); + } + return resultNode; + } + + private TreeNode middleSearch(TreeNode treeNode, int node){ + TreeNode resultNode = null; + if(treeNode == null){ + System.out.println("当前节点为空"); + return resultNode; + } + + if (treeNode.left!= null){ + resultNode = middleSearch(treeNode.left, node); + } + + if(resultNode!= null){ + return resultNode; + } + + if(treeNode.node == node){ + System.out.println("已找到treeNode:"+ treeNode.toString()); + resultNode = treeNode; + return resultNode; + } + System.out.println("当前treeNode为:"+ treeNode.toString()); + + if (treeNode.right!= null){ + resultNode = middleSearch(treeNode.right, node); + } + return resultNode; + } + + private TreeNode behindSearch(TreeNode treeNode, int node){ + TreeNode resultNode = null; + if(treeNode == null){ + System.out.println("当前节点为空"); + return resultNode; + } + + if (treeNode.left!= null){ + resultNode = behindSearch(treeNode.left, node); + } + + if(resultNode != null){ + return resultNode; + } + + if (treeNode.right!= null){ + resultNode = behindSearch(treeNode.right, node); + } + + if(resultNode != null){ + return resultNode; + } + + if(treeNode.node == node){ + System.out.println("已找到treeNode:"+ treeNode.toString()); + resultNode = treeNode; + return resultNode; + } + System.out.println("当前treeNode为:"+ treeNode.toString()); + return resultNode; + } + + public static class TreeNode{ + private int node; + + private TreeNode left; + + private TreeNode right; + + public TreeNode(int node) { + this.node = node; + } + + @Override + public String toString() { + return "TreeNode{" + + "node=" + node + + ", left=" + (left == null ? "null" : left.node) + + ", right=" + (right == null ? "null" : right.node) + + '}'; + } + } + + public static void main(String[] args) { + int[] arr = {7, 3, 10, 12, 5, 1, 9}; + BinaryTreeSearch treeSearch = new BinaryTreeSearch(); + treeSearch.transTree(arr); + System.out.println("前序遍历:"); + treeSearch.forwardSearch(treeSearch.root, 5); + System.out.println("中序遍历:"); + treeSearch.middleSearch(treeSearch.root, 5); + System.out.println("后序遍历:"); + treeSearch.behindSearch(treeSearch.root, 5); + } +}