diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..73f69e0958611ac6e00bde95641f6699030ad235
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d4b854b8d4fa7be1ca526617ed1590623b835f8c
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9d98e885cd51e1ea254877f84e750548e5c8fae2
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000000000000000000000000000000000000..35eb1ddfbbc029bcab630581847471d7f238ec53
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/BinaryTree.java b/BinaryTree.java
new file mode 100644
index 0000000000000000000000000000000000000000..e2f2b56ec2b3c480ea8b6ac77fb6ddd3dbdb09b3
--- /dev/null
+++ b/BinaryTree.java
@@ -0,0 +1,206 @@
+// 写层序遍历用
+import java.util.LinkedList;
+public class BinaryTree> {
+ public Node root;
+ BinaryTree(){
+ root = null;
+ }
+
+ /**插入元素*/
+ public void insert(T val)
+ {
+ insert(val, this.root);
+ }
+ /**在某个位置开始判断插入元素
+ * @return*/
+ public Node insert(T t, Node node) {
+ if (node == null) {
+ //新构造一个二叉查找树
+ return new Node(t);
+ }
+ int result = t.compareTo(node.value);
+ if (result < 0)
+ node.left=insert(t,node.left);
+ else if (result > 0)
+ node.right=insert(t, node.right);
+ else
+ ;//doNothing
+ return node;
+ }
+
+ /**删除元素*/
+ public void remove(T t)
+ {
+ root = remove(t,root);
+ } /**在某个位置开始判断删除某个结点*/
+ public Node remove(T t,Node node) {
+ if (node == null)
+ return node;//没有找到,doNothing
+ int result = t.compareTo(node.value);
+ if (result > 0)
+ node.right = remove(t, node.right);
+ else if (result < 0)
+ node.left = remove(t, node.left);
+ else if (node.left != null && node.right != null) {
+ node.value = findMin(node.right);
+ node.right = remove(node.value, node.right);
+ } else
+ node = (node.left != null) ? node.left : node.right;
+ return node;
+ }
+
+ /**找到二叉查找树中的最小值
+ * @param value*/
+ public T findMin(Object value) {
+ if (isEmpty()) {
+ System.out.println("二叉树为空");
+ return null;
+ } else
+ return (root).value;
+
+ }
+
+ public boolean isEmpty() {
+ return root == null;
+ }
+
+//查找
+ public boolean contains(T val){
+
+ return contains(val,root);
+ }
+
+ //查找循环版
+ public boolean contains(T t,Node tree){
+
+ while (tree!=null){
+ int result = t.compareTo((T) tree.value);
+ if (result==0){
+ return true;
+ }else if(result<0){
+ tree=tree.left;
+ }else {
+ tree=tree.right;
+ }
+ }
+ return false;
+
+ }
+ //查询递归版
+// public boolean contains(T t,Node tree){
+// int result = t.compareTo((T) tree.value);
+// if (tree==null){
+// return false;
+// }else if (result==0){
+// return true;
+// }else if (result<0){
+// return (contains(t,tree.left));
+//
+// }else return (contains(t,tree.right));
+//
+// }
+
+ /*
+ * 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(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);
+ }
+
+ public void inOrderTraversal(Node tree){
+ if(tree != null) {
+
+
+ // 打印10左子树
+ inOrderTraversal(tree.left);
+ // root.left.value // 5
+ // root.left.left.value // 3
+ // root.left.right.value // 7
+ // root.value // 10 打印自身
+ System.out.print(tree.value);
+ System.out.print(" ");
+ // 打印右子树
+ inOrderTraversal(tree.right);
+ // root.right.value // 15
+ // root.right.left.value // 12
+ // root.right.right.value // 20
+ }
+ }
+ public void postOrder(){
+ postOrderTraversal(root);
+ }
+ public void postOrderTraversal(Node tree){
+ if(tree != null) {
+
+
+ // 打印10左子树
+ postOrderTraversal(tree.left);
+ // root.left.value // 5
+ // root.left.left.value // 3
+ // root.left.right.value // 7
+
+ // 打印右子树
+ postOrderTraversal(tree.right);
+ // root.right.value // 15
+ // root.right.left.value // 12
+ // root.right.right.value // 20
+
+ // root.value // 10 打印自身
+ System.out.print(tree.value);
+ System.out.print(" ");
+ }
+ }
+ public void level(){
+ levelOrderTraversal(root);
+ }
+ public void levelOrderTraversal(Node tree){
+ if (tree==null){
+ return;
+ }
+ 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.java b/Main.java
new file mode 100644
index 0000000000000000000000000000000000000000..ed6150525f8f0936c61487965b542a0a2ad35535
--- /dev/null
+++ b/Main.java
@@ -0,0 +1,55 @@
+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();
+ if (bt.contains(20)){
+ System.out.println("存在");
+ }else {
+ System.out.println("不存在");
+ }
+ bt.level();
+ System.out.println();
+ //树的插入
+ bt.insert(8);
+ bt.insert(19);
+ bt.insert(21);
+ System.out.println();
+ bt.preOrder();
+ System.out.println();
+ System.out.println("-----------------");
+ //删除元素
+ bt.remove(3);
+ System.out.println();
+ bt.preOrder();
+ }
+}
\ No newline at end of file
diff --git a/Node.java b/Node.java
new file mode 100644
index 0000000000000000000000000000000000000000..901b1a2bd6c06a19d4888918e969e7a03a5ff713
--- /dev/null
+++ b/Node.java
@@ -0,0 +1,12 @@
+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/lec05-tree.iml b/lec05-tree.iml
new file mode 100644
index 0000000000000000000000000000000000000000..b107a2dd81165eaaf682ad3da030668b937fbb6c
--- /dev/null
+++ b/lec05-tree.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/out/production/lec05-tree/.gitignore b/out/production/lec05-tree/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..be4e21604f0029f5107fa5b6efaf8f36f0518239
--- /dev/null
+++ b/out/production/lec05-tree/.gitignore
@@ -0,0 +1,7 @@
+gen-branch.js
+.DS_Store
+package.json
+package-lock.json
+node_modules
+id.txt
+run.sh
diff --git a/out/production/lec05-tree/.idea/.gitignore b/out/production/lec05-tree/.idea/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..73f69e0958611ac6e00bde95641f6699030ad235
--- /dev/null
+++ b/out/production/lec05-tree/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/out/production/lec05-tree/.idea/misc.xml b/out/production/lec05-tree/.idea/misc.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d4b854b8d4fa7be1ca526617ed1590623b835f8c
--- /dev/null
+++ b/out/production/lec05-tree/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/out/production/lec05-tree/.idea/modules.xml b/out/production/lec05-tree/.idea/modules.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9d98e885cd51e1ea254877f84e750548e5c8fae2
--- /dev/null
+++ b/out/production/lec05-tree/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/out/production/lec05-tree/.idea/vcs.xml b/out/production/lec05-tree/.idea/vcs.xml
new file mode 100644
index 0000000000000000000000000000000000000000..35eb1ddfbbc029bcab630581847471d7f238ec53
--- /dev/null
+++ b/out/production/lec05-tree/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/out/production/lec05-tree/BinaryTree.class b/out/production/lec05-tree/BinaryTree.class
new file mode 100644
index 0000000000000000000000000000000000000000..b7c59c2bc62c608c0504db20c08e8183852e8a38
Binary files /dev/null and b/out/production/lec05-tree/BinaryTree.class differ
diff --git a/out/production/lec05-tree/Main.class b/out/production/lec05-tree/Main.class
new file mode 100644
index 0000000000000000000000000000000000000000..7cc5b4efb27aa0736a18953c5aaddc8269c6b611
Binary files /dev/null and b/out/production/lec05-tree/Main.class differ
diff --git a/out/production/lec05-tree/Node.class b/out/production/lec05-tree/Node.class
new file mode 100644
index 0000000000000000000000000000000000000000..8833b71af0a3dc049075cabf75556a5d08293f25
Binary files /dev/null and b/out/production/lec05-tree/Node.class differ
diff --git a/out/production/lec05-tree/README.md b/out/production/lec05-tree/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..8ec588d3be33fdf893da1c32f38e382e09de7d7b
--- /dev/null
+++ b/out/production/lec05-tree/README.md
@@ -0,0 +1,32 @@
+# 树实验
+
+### 作业要求
+
+1. 必做任务:基础部分
+2. 选做任务:进阶部分,做多少是多少
+
+### 截止日期
+
+下次实验课上课前(11.25)
+
+### 基础
+
+1. 实现⼀个⼆叉查找树,并且支持插⼊、删除、查找操作
+2. 实现⼆叉树前、中、后序以及按层遍历
+
+### 进阶
+
+1. 设计一个算法,找出二叉搜索树中指定节点的“下一个”/"前一个"节点(也即中序后继/前驱)。
+
+## 工作流程
+
+1. Fork 本仓库
+2. Clone 代码到本地
+3. 切换到自己学号对应的分支
+4. 完成作业
+5. 提交代码
+6. 新建 Pull Request
+
+## Questions
+
+1. 如何提交?lec02-linkedlist 项目中的参考作业提交流程.pdf 文件
diff --git a/out/production/lec05-tree/lec05-tree.iml b/out/production/lec05-tree/lec05-tree.iml
new file mode 100644
index 0000000000000000000000000000000000000000..b107a2dd81165eaaf682ad3da030668b937fbb6c
--- /dev/null
+++ b/out/production/lec05-tree/lec05-tree.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git "a/out/production/lec05-tree/\350\257\276\344\273\266/lecture05-tree.pdf" "b/out/production/lec05-tree/\350\257\276\344\273\266/lecture05-tree.pdf"
new file mode 100644
index 0000000000000000000000000000000000000000..a6582225061dfd84f0fcb61a5c1a34da80f33820
Binary files /dev/null and "b/out/production/lec05-tree/\350\257\276\344\273\266/lecture05-tree.pdf" differ