diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/code_opensource_2020.iml b/.idea/code_opensource_2020.iml
new file mode 100644
index 0000000..d6ebd48
--- /dev/null
+++ b/.idea/code_opensource_2020.iml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..639900d
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..3774eb9
--- /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 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Java/binary-tree-preorder.java b/Java/binary-tree-preorder.java
new file mode 100644
index 0000000..404ea91
--- /dev/null
+++ b/Java/binary-tree-preorder.java
@@ -0,0 +1,39 @@
+/**
+ * Definition for a binary tree node.
+ * public class TreeNode {
+ * int val;
+ * TreeNode left;
+ * TreeNode right;
+ * TreeNode() {}
+ * TreeNode(int val) { this.val = val; }
+ * TreeNode(int val, TreeNode left, TreeNode right) {
+ * this.val = val;
+ * this.left = left;
+ * this.right = right;
+ * }
+ * }
+ */
+class Solution {
+ public List preorderTraversal(TreeNode root) {
+
+ if (root == null){
+ return new ArrayList();
+ }
+ Stack stack = new Stack<>();
+ List result = new ArrayList<>();
+ stack.push(root);
+ while(!stack.isEmpty()){
+ TreeNode node = stack.pop();
+ result.add(node.val);
+ if (node.right != null){
+ stack.push(node.right);
+ }
+ if (node.left != null){
+ stack.push(node.left);
+ }
+
+ }
+ return result;
+
+ }
+}
\ No newline at end of file