100. Same Tree
来源:互联网 发布:身份证合成软件 编辑:程序博客网 时间:2024/06/08 12:27
问题描述
Given two binary trees, write a function to check if they are the same or not.
Two binary trees are considered the same if they are structurally identical and the nodes have the same value.
Example 1:
Input: 1 1
/ \ / \
2 3 2 3
[1,2,3], [1,2,3]
Output: true
Example 2:
Input: 1 1
/ \
2 2
[1,2], [1,null,2]
Output: false
Example 3:
Input: 1 1
/ \ / \
2 1 1 2
[1,2,1], [1,1,2]
Output: false
题目链接:
思路分析
给出两棵树,返回两棵树是否相同。相同要求树的结构相同,以及相应结点的值也相同。
自己实现了一个返回值为string的前序遍历的方法,如果没有结点就返回" "
然后比对两个string是否相同。
代码
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: bool isSameTree(TreeNode* p, TreeNode* q) { string a = PreorderVisitTree(p),b = PreorderVisitTree(q); return (a == b); } string PreorderVisitTree(TreeNode* p){ string s = ""; if(p){ s += p->val; if (p->left != NULL) s += PreorderVisitTree(p->left); else s += " "; if(p->right != NULL) s += PreorderVisitTree(p->right); else s += " "; } else return " "; return s; }};
时间复杂度:O(m+n) //m, n为树的结点数
反思
这个解法太慢了,要完全遍历两棵树才能出结果。看Discussion有直接递归调用isSameTree的,惊为天人,实现代码:
class Solution {public: bool isSameTree(TreeNode* p, TreeNode* q) { if(p == NULL || q == NULL) return (p == q); else return((p->val == q->val) && isSameTree(p->left, q->left)&& isSameTree(p->right, q->right)); }};
若两结点有不存在的,看是否有结构不同,若结构相同,则比较值是否相同,以及左右子结点的结构和值是否相同。
- [LeetCode]100.Same Tree
- LeetCode 100. Same Tree
- 100.Same Tree
- 【LeetCode】100.Same Tree
- [Leetcode] 100. Same Tree
- [Leetcode] 100. Same Tree
- LeetCode --- 100. Same Tree
- LeetCode 100. Same Tree
- [leetcode] 100.Same Tree
- 100.Same Tree
- 100. Same Tree
- 100.Same Tree
- 100. Same Tree
- 100. Same Tree
- 100. Same Tree
- leetCode 100. Same Tree
- 100. Same Tree
- [LeetCode]100. Same Tree
- oracle中sql语句查询优化(七)
- Q-learning算法实现
- PTA-玩转二叉树
- Debian9:修改默认网卡为eth0,ifconfig
- Swift-CGRect,CGSize,CGPoint 使用
- 100. Same Tree
- 29、Android 微信分享checkArgs fail, thumbData is invalid
- Java面试知识点总结
- 从Android模拟器sdcard中导出文件
- 软键盘顶布局
- Android 特效
- PAT考试乙级1043(C语言实现)
- ThinkPHP3.2 关闭调试模式后的Bug补充
- js调用本地摄像头截图并用ajax上传至后台服务器完成交互