如果2个二叉树的数据结构和对应节点的值都相同,则2棵树是相同树。
递归版:
public static bool IsSameTree(TreeNode p,TreeNode q)
{
if (p == null && q == null) return true;
if (p == null || q == null) return false;
return p.value == q.value && IsSameTree(p.Left, q.Left) && IsSameTree(p.Right, q.Right);
}
迭代版:
public static bool IsSameTree1(TreeNode p,TreeNode q)
{
Stack<TreeNode> s = new Stack<TreeNode>();
s.Push(p);
s.Push(q);
while (s.Count > 0)
{
p = s.Pop();
q = s.Pop();
if (p == null && q == null) continue;
if (p == null || q == null) return false;
if (p.value != q.value) return false;
s.Push(p.Left);
s.Push(q.Left);
s.Push(q.Right);
s.Push(p.Right);
}
return true;
}