/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func addOneRow(root *TreeNode, v int, d int) *TreeNode {
	if root == nil {
		return root
	} else if d == 1 {
		return &TreeNode{v, root, nil}
	} else if d == 2 {
		root.Left = &TreeNode{v, root.Left, nil}
		root.Right = &TreeNode{v, nil, root.Right}
		return root
	}
	root.Left = addOneRow(root.Left, v, d-1)
	root.Right = addOneRow(root.Right, v, d-1)
	return root
}