算法课第十八周Same Tree

来源:互联网 发布:乐视手机mac 编辑:程序博客网 时间:2024/06/07 20:52
Same TreeGiven two binary trees, write a function to check if they are equal or not.Two binary trees are considered equal if they are structurally identical and the nodes have the same value.

解题思路:
给定两个树,判断这两个树是不是一模一样的树。
分析树的结构,用分治的思想,先判断val是否一样,再判断两个左边部分和两个右边部分是否一样。

先判断TreeNode是否是NULL,如果不是,将左边部分和右边部分视为另外的树,采用迭代的方法,再次判断val和比较左右两部分。如果两个左边的TreeNode是空,则判断右边的树是否一样即可,反之亦然。

    class Solution {      public:          bool isSameTree(TreeNode* p, TreeNode* q) {              if(p == NULL && q == NULL)                  return true;              else if (p == NULL || q == NULL)                  return false;              if(p->left == NULL && p->right == NULL && q->left == NULL && q->right == NULL)              {                  if(p->val == q->val)                      return true;                  else                      return false;              }              else if (p->val == q->val && p->left == NULL && p->right != NULL && q->left == NULL && q->right != NULL)              {                  return isSameTree(p->right, q->right);              }              else if (p->val == q->val && p->left != NULL && p->right == NULL && q->left != NULL && q->right == NULL)              {                  return isSameTree(p->left, q->left);              }              else if (p->val == q->val && p->left != NULL && p->right != NULL && q->left != NULL && q->right != NULL)              {                  return (isSameTree(p->left, q->left) && isSameTree(p->right, q->right));              }              else                  return false;          }      };  
原创粉丝点击