From d5634c4d42fcbe8fa0d274332fb3bf4d4c60a979 Mon Sep 17 00:00:00 2001 From: Matej Focko Date: Tue, 16 Apr 2024 15:11:43 +0200 Subject: [PATCH] =?UTF-8?q?java:=20add=20=C2=AB623.=20Add=20One=20Row=20to?= =?UTF-8?q?=20Tree=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Matej Focko --- java/add-one-row-to-tree.java | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 java/add-one-row-to-tree.java 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); + } +}