[leetcode.com]算法题目 - Same Tree

Given 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.

 1 /**

 2  * Definition for binary tree

 3  * struct TreeNode {

 4  *     int val;

 5  *     TreeNode *left;

 6  *     TreeNode *right;

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

 8  * };

 9  */

10 class Solution {

11 public:

12     bool isSameTree(TreeNode *p, TreeNode *q) {

13         // Start typing your C/C++ solution below

14         // DO NOT write int main() function

15         if (NULL==p && NULL==q) return true;

16         

17         if (NULL!=p && NULL==q) return false;

18         

19         if (NULL !=q && NULL==p) return false;

20         

21         if (p->val == q-> val)

22             return (isSameTree(p->left,q->left) && isSameTree(p->right,q->right));

23         else

24             return false;

25     }

26 };
题目答案

思路:采用递归的方法,先判断(1)p和q都为NULL,则返回true;(2)p和q一个是NULL,一个不是NULL,则返回false;(3)如果(1)和(2)都不是,则证明两个tree都不是NULL,判断p->value是否等于q->value,若不等于,则返回false;若等于,则返回(他们的左子树相等 and 他们的右子树相等)。

你可能感兴趣的:(LeetCode)