【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 @   SunshineAtNoon  阅读(182)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示