博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode(100)题解--Same Tree
阅读量:5356 次
发布时间:2019-06-15

本文共 2915 字,大约阅读时间需要 9 分钟。

https://leetcode.com/problems/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.

思路:  DFS

AC代码:

1.递归

1 /** 2  * Definition for a binary tree node. 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         else if(p!=NULL&&q!=NULL){16         bool ju;17         if(p->val==q->val)18             ju=true;19         else20             return false;21         if (p->left==NULL && q->left==NULL)22             ;23         else if(p->left!=NULL && q->left!=NULL)24             ju=ju&&isSameTree(p->left,q->left);25         else26             return false;27         if (p->right==NULL && q->right==NULL)28             ;29         else if(p->right!=NULL && q->right!=NULL)30             ju=ju&&isSameTree(p->right,q->right);31         else32             return false;33         return ju;34         }35         else36             return false;37     }38 };

2.非递归

1 /** 2  * Definition for a binary tree node. 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         else if(p!=NULL && q!=NULL){16             stack
ms1,ms2;17 ms1.push(p);18 ms2.push(q);19 TreeNode* p1,*q1;20 while(!ms1.empty()){21 p1=ms1.top();22 q1=ms2.top();23 if(p1->val!=q1->val)24 return false;25 else{26 ms1.pop();27 ms2.pop();28 if(p1->right==NULL&&q1->right==NULL)29 ;30 else if(p1->right!=NULL&&q1->right!=NULL){31 ms1.push(p1->right);32 ms2.push(q1->right);33 }34 else35 return false;36 if(p1->left==NULL&&q1->left==NULL)37 ;38 else if(p1->left!=NULL&&q1->left!=NULL){39 ms1.push(p1->left);40 ms2.push(q1->left);41 }42 else43 return false;44 }45 }46 return true;47 }48 else 49 return false;50 }51 };

 

转载于:https://www.cnblogs.com/aezero/p/4862534.html

你可能感兴趣的文章
Context.startActivity出现AndroidRuntimeException
查看>>
Intellij idea创建javaWeb以及Servlet简单实现
查看>>
代理网站
查看>>
Open multiple excel files in WebBrowser, only the last one gets activated
查看>>
FFmpeg进行视频帧提取&音频重采样-Process.waitFor()引发的阻塞超时
查看>>
最近邻与K近邻算法思想
查看>>
【VS开发】ATL辅助COM组件开发
查看>>
FlatBuffers In Android
查看>>
《演说之禅》I & II 读书笔记
查看>>
thinkphp3.2接入支付宝支付接口(PC端)
查看>>
response和request
查看>>
【转】在Eclipse中安装和使用TFS插件
查看>>
回到顶部浮窗设计
查看>>
C#中Monitor和Lock以及区别
查看>>
【NOIP2017】奶酪
查看>>
$ 一步一步学Matlab(3)——Matlab中的数据类型
查看>>
5.6.3.7 localeCompare() 方法
查看>>
Linux下好用的简单实用命令
查看>>
常用web字体的使用指南
查看>>
描绘应用程序级的信息
查看>>