C# Solution
\npublic class Solution \n{\n    public TreeNode SubtreeWithAllDeepest(TreeNode root) \n    {\n        if(root == null) return root;\n        int l = GetDepth(r
```\npublic class Solution \n{\n    public TreeNode SubtreeWithAllDeepest(TreeNode root) \n    {\n        if(root == null) return root;\n        int l = GetDepth(root.left), r = GetDepth(root.right);\n        if(l == r) return root;\n        if(l > r) return SubtreeWithAllDeepest(root.left);\n        return SubtreeWithAllDeepest(root.right);\n    }\n    \n    private int GetDepth(TreeNode root)\n    {\n        return root == null ? 0 : 1 + Math.Max(GetDepth(root.left), GetDepth(root.right));\n    }\n}\n```
[]