【leetcode刷题笔记】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         if(p == NULL && q == NULL)

14             return true;

15         if((p == NULL && q != NULL) ||(p != NULL && q == NULL))

16             return false;

17         if(p->val != q->val)

18             return false;

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

20     }

21 };

 Java版本代码:

 1 public class Solution {

 2     public boolean isSameTree(TreeNode p, TreeNode q) {

 3         int ispempty = p == null?0:1;

 4         int isqempty = q == null?0:1;

 5         if(ispempty != isqempty)

 6             return false;

 7         return isSameTreeHelper(p, q);

 8     }

 9     public boolean isSameTreeHelper(TreeNode p,TreeNode q){

10         if(p == null && q == null)

11             return true;

12         if(p.val != q.val)

13             return false;

14         

15         int pleftempty = p.left == null?0:1;

16         int qleftempty = q.left == null?0:1;

17         if(pleftempty != qleftempty)

18             return false;

19         if(isSameTreeHelper(p.left, q.left) == false)

20             return false;

21         

22         int prightempty = p.right == null?0:1;

23         int qrightempty = q.right == null?0:1;

24         if(prightempty != qrightempty)

25             return false;

26         if(isSameTreeHelper(p.right, q.right) == false)

27             return false;

28         

29         return true;

30         

31     }

32 }

Java版本写复杂了=。=

你可能感兴趣的:(LeetCode)