package com.fishercoder.solutions;

import com.fishercoder.common.classes.TreeNode;

public class _623 {

    public static class Solution1 {

        public TreeNode addOneRow(TreeNode root, int v, int d) {
            if (d == 1) {
                TreeNode newRoot = new TreeNode(v);
                newRoot.left = root;
                return newRoot;
            } else {
                dfs(root, v, d);
                return root;
            }
        }

        private void dfs(TreeNode root, int v, int d) {
            if (root == null) {
                return;
            }
            if (d == 2) {
                TreeNode newLeft = new TreeNode(v);
                TreeNode newRight = new TreeNode(v);
                newLeft.left = root.left;
                newRight.right = root.right;
                root.left = newLeft;
                root.right = newRight;
            } else {
                dfs(root.left, v, d - 1);
                dfs(root.right, v, d - 1);
            }
        }
    }

}

package com.fishercoder.solutions;

import com.fishercoder.common.classes.TreeNode;

public class _623 {

    public static class Solution1 {
        public TreeNode addOneRow(TreeNode root, int v, int d) {
            if (d == 1) {
                TreeNode newRoot = new TreeNode(v);
                newRoot.left = root;
                return newRoot;
            } else {
                dfs(root, v, d);
                return root;
            }
        }

        private void dfs(TreeNode root, int v, int d) {
            if (root == null) {
                return;
            }
            if (d == 2) {
                TreeNode newLeft = new TreeNode(v);
                TreeNode newRight = new TreeNode(v);
                newLeft.left = root.left;
                newRight.right = root.right;
                root.left = newLeft;
                root.right = newRight;
            } else {
                dfs(root.left, v, d - 1);
                dfs(root.right, v, d - 1);
            }
        }
    }

}

refactor 623