public static int deepestLeavesSum_depthVal(TreeNode p_root)
        {
            depthVal topdv = new depthVal(0, p_root.val);

            topdv.add(diver(p_root.left, topdv));
            topdv.add(diver(p_root.right, topdv));

            return(topdv.val);
        }
        public static depthVal diver(TreeNode p_node, depthVal p_parent)
        {
            if (p_node is null)
            {
                return(p_parent);
            }
            Console.WriteLine("depth:" + (p_parent.depth + 1) + "|val:" + p_node.val);

            depthVal thisNode = new depthVal(p_parent.depth + 1, p_node.val);

            if (!(p_node.left is null))
            {
                thisNode.add(diver(p_node.left, thisNode));
            }
            if (!(p_node.right is null))
            {
                thisNode.add(diver(p_node.right, thisNode));
            }

            return(thisNode);
        }