LeetCode101.对称二叉树
题目
代码
一,递归
/**
* 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)
{
return IsMirror(root,root);
}
public bool IsMirror(TreeNode t1, TreeNode t2)
{
if (t1 == null && t2 == null)
return true;
if (t1 == null || t2 == null || t1.val != t2.val)
return false;
return IsMirror(t1.right,t2.left) && IsMirror(t1.left,t2.right);
}
}
二,迭代
/**
* 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)
{
Queue<TreeNode> queue = new Queue<TreeNode>();
queue.Enqueue(root);
queue.Enqueue(root);
while (queue.Count != 0)
{
TreeNode t1 = queue.Dequeue();
TreeNode t2 = queue.Dequeue();
if (t1 == null && t2 == null)
continue;
if (t1 == null || t2 == null)
return false;
if (t1.val != t2.val)
return false;
queue.Enqueue(t1.left);
queue.Enqueue(t2.right);
queue.Enqueue(t1.right);
queue.Enqueue(t2.left);
}
return true;
}
}