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;}}

浙公网安备 33010602011771号