vlambda博客
学习文章列表

判断两二叉树是否相等

题目描述:给出两个二叉树,请写出一个判断两个二叉树是否相等的函数。判断两个二叉树相等的条件是:两个二叉树的结构相同,并且相同的节点上具有相同的值。


示例:

input:{1,2},{1,#,2}

output:false


思路:

    递归:1)判断根节点的值是否相等,2)判断左右子树是否相等


数据结构:

struct TreeNode { int val;  struct TreeNode *left;  struct TreeNode *right;  TreeNode(int x) :   val(x), left(NULL), right(NULL) {  }};


代码

bool isSameTree(TreeNode* p, TreeNode* q) {  /*判断根节点是否为空*/  if (p == nullptr || q == nullptr)    return p == q;  if (p->val != q->val)    return false;  return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);}