From b5b56f06c0faa6e95925b8e63108be882e955b2f Mon Sep 17 00:00:00 2001 From: zan Date: Wed, 18 Nov 2020 08:32:26 +0800 Subject: [PATCH 1/2] =?UTF-8?q?[add]=20=E5=85=88=E5=BA=8F=E9=81=8D?= =?UTF-8?q?=E5=8E=86=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BinaryTree.java | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ Main.java | 29 +++++++++++++++++++++++++++++ Node.java | 11 +++++++++++ 3 files changed, 88 insertions(+) create mode 100644 BinaryTree.java create mode 100644 Main.java create mode 100644 Node.java diff --git a/BinaryTree.java b/BinaryTree.java new file mode 100644 index 0000000..44fcb01 --- /dev/null +++ b/BinaryTree.java @@ -0,0 +1,48 @@ +// 写层序遍历用 +import java.util.Queue; +import java.util.LinkedList; + +public class BinaryTree { + public Node root; + + BinaryTree(){ + root = null; + } + + void insert(T val){} + + /* + * 10 + * 5 15 + * 3 7 12 20 + * preOrder: 10 5 3 7 15 12 20 + */ + public void preOrder(){ + preOrderTraversal(root); + } + + private void preOrderTraversal(Node tree){ + if(tree != null) { + // root.value // 10 打印自身 + System.out.print(tree.value); + System.out.print(" "); + + // 打印10左子树 + preOrderTraversal(root.left) + // root.left.value // 5 + // root.left.left.value // 3 + // root.left.right.value // 7 + + // 打印右子树 + preOrderTraversal(root.right) + // root.right.value // 15 + // root.right.left.value // 12 + // root.right.right.value // 20 + } + } + + + public void inOrder(){} + public void postOrder(){} + public void level(){} +} \ No newline at end of file diff --git a/Main.java b/Main.java new file mode 100644 index 0000000..d394f77 --- /dev/null +++ b/Main.java @@ -0,0 +1,29 @@ +class Main { + public static void main(String[] args){ + // 构造了一个空树 + BinaryTree bt = new BinaryTree(); + /* + * 10 + * 5 15 + * 3 7 12 20 + * preOrder: 10 5 3 7 15 12 20 + */ + bt.root = new Node(10); + Node left1 = new Node(5); + bt.root.left = left1; + Node right1 = new Node(15); + bt.root.right = right1; + + Node left21 = new Node(3); + left1.left = left21; + Node left22 = new Node(7); + left1.right = left22; + + Node left23 = new Node(12); + Node left24 = new Node(20); + right1.left = left23; + right1.right = left24; + + bt.preOrder(); + } +} \ No newline at end of file diff --git a/Node.java b/Node.java new file mode 100644 index 0000000..d845786 --- /dev/null +++ b/Node.java @@ -0,0 +1,11 @@ +public class Node { + public T value; + public Node left; + public Node right; + + Node(T val){ + value = val; + left = null; + right = null; + } +} \ No newline at end of file -- Gitee From a362d6ed8062bcb58e65efe35101dd0c136618b7 Mon Sep 17 00:00:00 2001 From: 17605914716 Date: Tue, 24 Nov 2020 23:32:57 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=A0=91=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BinaryTree.java | 48 -------- Node.java | 11 -- "\350\257\276\344\273\266/BinaryTree.java" | 114 ++++++++++++++++++ .../Main.java" | 55 +++++---- "\350\257\276\344\273\266/Node.java" | 29 +++++ 5 files changed, 170 insertions(+), 87 deletions(-) delete mode 100644 BinaryTree.java delete mode 100644 Node.java create mode 100644 "\350\257\276\344\273\266/BinaryTree.java" rename Main.java => "\350\257\276\344\273\266/Main.java" (31%) create mode 100644 "\350\257\276\344\273\266/Node.java" diff --git a/BinaryTree.java b/BinaryTree.java deleted file mode 100644 index 44fcb01..0000000 --- a/BinaryTree.java +++ /dev/null @@ -1,48 +0,0 @@ -// 写层序遍历用 -import java.util.Queue; -import java.util.LinkedList; - -public class BinaryTree { - public Node root; - - BinaryTree(){ - root = null; - } - - void insert(T val){} - - /* - * 10 - * 5 15 - * 3 7 12 20 - * preOrder: 10 5 3 7 15 12 20 - */ - public void preOrder(){ - preOrderTraversal(root); - } - - private void preOrderTraversal(Node tree){ - if(tree != null) { - // root.value // 10 打印自身 - System.out.print(tree.value); - System.out.print(" "); - - // 打印10左子树 - preOrderTraversal(root.left) - // root.left.value // 5 - // root.left.left.value // 3 - // root.left.right.value // 7 - - // 打印右子树 - preOrderTraversal(root.right) - // root.right.value // 15 - // root.right.left.value // 12 - // root.right.right.value // 20 - } - } - - - public void inOrder(){} - public void postOrder(){} - public void level(){} -} \ No newline at end of file diff --git a/Node.java b/Node.java deleted file mode 100644 index d845786..0000000 --- a/Node.java +++ /dev/null @@ -1,11 +0,0 @@ -public class Node { - public T value; - public Node left; - public Node right; - - Node(T val){ - value = val; - left = null; - right = null; - } -} \ No newline at end of file diff --git "a/\350\257\276\344\273\266/BinaryTree.java" "b/\350\257\276\344\273\266/BinaryTree.java" new file mode 100644 index 0000000..41c3ae8 --- /dev/null +++ "b/\350\257\276\344\273\266/BinaryTree.java" @@ -0,0 +1,114 @@ +import java.util.Queue; +import java.util.LinkedList; +import java.util.ArrayDeque; +import java.util.ArrayList; + +public class BinaryTree { + public Node root; + + //返回根结点 + public Node getroot(){ + return root; + } + + //增加数据 + public void addvalue(T item){ + Node node = new Node(); + node.setValue(item); + if( root == null){ + root = node; + } + else + { + Node temp1 = new Node(); + Node temp2 = root; + while(true){ + temp1 = temp2; + if(temp2.getValue() > item){ + temp2 = temp2.getLeft(); + if(temp2 == null){ + temp1.setLeft(node); + return ; + } + } + else if(temp2.getValue() < item){ + temp2 = temp2.getRight(); + if(temp2 == null){ + temp1.setRight(node); + return; + } + }else{ + System.out.println("error!"); + return; + } + } + } + } + //查找树 + public void findvalue(T item){ + Node node = new Node(); + node = root; + int floor=1; + if(root != null){ + while(true){ + if(node.getValue() > item){ + node = node.getLeft(); + floor++; + if(node == null){ + System.out.println("error!"); + return; + } + } + else if(node.getValue() < item){ + node = node.getRight(); + floor++; + if(node == null){ + System.out.println("error!"); + return; + } + } + else{ + System.out.println("找到" +item+ "在第" +floor+ "层"); + return; + } + + } + }else{ + System.out.println("error!空树!"); + } + } + //前序遍历 + public void prefind(Node node){ + if(node != null){ + System.out.println(node.getValue() + " "); + prefind(node.getLeft()); + prefind(node.getRight()); + } + } + + //中序遍历 + public void midfind(Node node){ + if(node != null){ + midfind(node.getLeft()); + System.out.println(node.getValue() + " "); + midfind(node.getRight()); + } + } + //后序遍历 + public void lastfind(Node node){ + if(node != null){ + lastfind(node.getLeft()); + lastfind(node.getRight()); + System.out.println(node.getValue() + " "); + } + } + //层次遍历 + public void levelfind(Node node){ + if(node != null){ + + } + } + + //查找 + +} \ No newline at end of file diff --git a/Main.java "b/\350\257\276\344\273\266/Main.java" similarity index 31% rename from Main.java rename to "\350\257\276\344\273\266/Main.java" index d394f77..b20585b 100644 --- a/Main.java +++ "b/\350\257\276\344\273\266/Main.java" @@ -1,29 +1,28 @@ -class Main { - public static void main(String[] args){ - // 构造了一个空树 - BinaryTree bt = new BinaryTree(); - /* - * 10 - * 5 15 - * 3 7 12 20 - * preOrder: 10 5 3 7 15 12 20 - */ - bt.root = new Node(10); - Node left1 = new Node(5); - bt.root.left = left1; - Node right1 = new Node(15); - bt.root.right = right1; - - Node left21 = new Node(3); - left1.left = left21; - Node left22 = new Node(7); - left1.right = left22; - - Node left23 = new Node(12); - Node left24 = new Node(20); - right1.left = left23; - right1.right = left24; - - bt.preOrder(); - } +class Main { + public static void main(String[] args){ + // 构造了一个空树 + BinaryTree bt = new BinaryTree(); + + /* + * 10 + * 5 15 + * 3 7 12 20 + * preOrder: 10 5 3 7 15 12 20 + */ + public void test(BinaryTree bt){ + bt.addvalue(1); + bt.addvalue(20); + bt.addvalue(30); + bt.addvalue(40); + bt.addvalue(50); + bt.addvalue(22); + bt.addvalue(28); + bt.prefind(bt.getroot()); + bt.midfind(bt.getroot()); + bt.lastfind(bt.getroot()); + + } + + + } } \ No newline at end of file diff --git "a/\350\257\276\344\273\266/Node.java" "b/\350\257\276\344\273\266/Node.java" new file mode 100644 index 0000000..ef48376 --- /dev/null +++ "b/\350\257\276\344\273\266/Node.java" @@ -0,0 +1,29 @@ +public class Node { + public T value; + public Node left; + public Node right; + + public Node getLeft() { + return left; + } + + public void setLeft(Node left) { + this.left = left; + } + + public Node getRight() { + return right; + } + + public void setRight(Node right) { + this.right = right; + } + + public int getValue() { + return value; + } + + public void setValue(T value) { + this.value = value; + } +} \ No newline at end of file -- Gitee