diff --git a/BinaryTree.class b/BinaryTree.class new file mode 100644 index 0000000000000000000000000000000000000000..94ae1937f7852ca857d7b4b652bb72ae2f771eb6 Binary files /dev/null and b/BinaryTree.class differ diff --git a/BinaryTree.java b/BinaryTree.java new file mode 100644 index 0000000000000000000000000000000000000000..9fc3f7d5fe9be3d015391877e29b78902d09ef21 --- /dev/null +++ b/BinaryTree.java @@ -0,0 +1,113 @@ +// 写层序遍历用 +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(" "); + + + preOrderTraversal(tree.left); + // root.left.value // 5 + // root.left.left.value // 3 + // root.left.right.value // 7 + + + preOrderTraversal(tree.right); + // root.right.value // 15 + // root.right.left.value // 12 + // root.right.right.value // 20 + } + } + public void inOrder(){ + inOrderTraversal(root); + } + private void inOrderTraversal(Node tree){ + if(tree != null) { + + inOrderTraversal(tree.left); + // root.left.left.value // 3 + // root.left.value // 5 + // root.left.right.value // 7 + + // root.value // 10 打印自身 + System.out.print(tree.value); + System.out.print(" "); + + inOrderTraversal(tree.right); + // root.right.left.value // 12 + // root.right.value // 15 + // root.right.right.value // 20 + } + } + public void postOrder(){ + postOrderTraversal(root); + } + private void postOrderTraversal(Node tree){ + if(tree != null) { + + + postOrderTraversal(tree.left); + // root.left.left.value // 3 + // root.left.right.value // 7 + // root.left.value // 5 + + + + postOrderTraversal(tree.right); + // root.right.left.value // 12 + // root.right.right.value // 20 + // root.right.value // 15 + + + // root.value // 10 打印自身 + System.out.print(tree.value); + System.out.print(" "); + } + } + + + public void level(){ + levelTraversal(root); + } + + private void levelTraversal(Node tree){ + + LinkedList list=new LinkedList(); + list.add(tree); + Node temp; + while(!list.isEmpty()){ + temp=list.poll(); + System.out.print(temp.value); + System.out.print(" "); + if(temp.left!=null){ + list.add(temp.left); + } + if(temp.right!=null){ + list.add(temp.right); + } + } + + } +} \ No newline at end of file diff --git a/Main.class b/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..216c416fe21f032524de850be4895598c6b98b1e Binary files /dev/null and b/Main.class differ diff --git a/Main.java b/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..133a10fa19d7cfdf66995b822560f592b8f0a59b --- /dev/null +++ b/Main.java @@ -0,0 +1,37 @@ +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(); + System.out.println(" "); + bt.inOrder(); + System.out.println(" "); + bt.postOrder(); + System.out.println(" "); + bt.level(); + System.out.println(" "); + + } +} \ No newline at end of file diff --git a/Node.class b/Node.class new file mode 100644 index 0000000000000000000000000000000000000000..8838035f1c4cdc56a9bef4c1c70b635d193704a9 Binary files /dev/null and b/Node.class differ diff --git a/Node.java b/Node.java new file mode 100644 index 0000000000000000000000000000000000000000..d845786d309c0b0af9a216623da716af48f1af1d --- /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