LeetCode: Symmetric Tree C#
Performance


The recursive function is as fast as I can think of.
The iterative function should enqueue root.left and root.right instead of root and root to gain a cycle (micro-optimisation).


Review


I find it weird that the null node is considered symmetric IsSymmetric(null). I would throw an error for invalid input.
Both algorithms are not able to deal with TreeNode instances that have a cycle (stack overflow exception vs infinite loop respectively). You will lose some performance if you guard against cycles.
Helper is a public method. There is no reason for this. Make it private or local inside the public method, and perhaps rename it to IsSymmetric, which will not be in conflict with the public method because of different signature.
Parameter names t1 and t2 are best avoided. Use full and more clear names like node1 and node2.
Queue&lt;TreeNode&gt; Q = new Queue&lt;TreeNode&gt;(); should be written more concisely and clearly as var queue = new Queue&lt;TreeNode&gt;();.