# 101. Symmetric Tree 二叉树是否对称

Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).

For example, this binary tree `[1,2,2,3,4,4,3]` is symmetric:

```    1
/   2   2
/ \ / 3  4 4  3
```

But the following `[1,2,2,null,3,null,3]` is not:

```    1
/   2   2
\      3    3
```

Note:
Bonus points if you could solve it both recursively and iteratively.

``/**`` * Definition for a binary tree node.`` * public class TreeNode {`` *     public int val;`` *     public TreeNode left;`` *     public TreeNode right;`` *     public TreeNode(int x) { val = x; }`` * }`` */``public class Solution {``    public bool IsSymmetric(TreeNode root) {``		if (root == null) return true;``		Queue<TreeNode> queue = new Queue<TreeNode>();``		queue.Enqueue(root);``		while (queue.Count > 0) {``			int count = queue.Count;``			List<int?> nextLevel = new List<int?>();``			for (int i = 0; i < count; i++) {``				TreeNode curNode = queue.Dequeue();``				if (curNode.left != null) {``					queue.Enqueue(curNode.left);``					nextLevel.Add(curNode.left.val);``				} else {``					nextLevel.Add(null);``				}``				if (curNode.right != null) {``					queue.Enqueue(curNode.right);``					nextLevel.Add(curNode.right.val);``				} else {``					nextLevel.Add(null);``				}``			}``			if (!LevelIsSymmetric(nextLevel)){``				return false;``			}``		}``		return true;``    }``    ``	public bool LevelIsSymmetric(List<int?> list) {``		int left = 0;``		int right = list.Count - 1;``		while (right > left) {``			if (list[left++] != list[right--]) {``				return false;``			}``		}``		return true;``	}``}``

101. Symmetric Tree 二叉树是否对称

(0)
(0)

0条