【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版本写复杂了=。=

posted @ 2014-04-01 10:58  SunshineAtNoon  阅读(179)  评论(0编辑  收藏  举报