diff --git a/java/add-one-row-to-tree.java b/java/add-one-row-to-tree.java new file mode 100644 index 0000000..0985bc1 --- /dev/null +++ b/java/add-one-row-to-tree.java @@ -0,0 +1,35 @@ +class Solution { + private enum Side { + Left, + Right + } + + private TreeNode addOneRow(int depth, int val, TreeNode node, int currentDepth, Side s) { + if (depth == currentDepth) { + var newRoot = new TreeNode(val); + switch (s) { + case Left: + newRoot.left = node; + break; + case Right: + newRoot.right = node; + break; + } + + return newRoot; + } + + if (node == null) { + return node; + } + + node.left = addOneRow(depth, val, node.left, currentDepth + 1, Side.Left); + node.right = addOneRow(depth, val, node.right, currentDepth + 1, Side.Right); + + return node; + } + + public TreeNode addOneRow(TreeNode root, int val, int depth) { + return addOneRow(depth, val, root, 1, Side.Left); + } +}