leetcode572
/**
* Definition for a binary tree node.
* public class TreeNode {
* public int val;
* public TreeNode left;
* public TreeNode right;
* public TreeNode(int x) { val = x; }
* }
*/
public class Solution {
private string generatepreorderString(TreeNode s)
{
StringBuilder sb = new StringBuilder();
Stack<TreeNode> stacktree = new Stack<TreeNode>();
stacktree.Push(s);
while (stacktree.Count > )
{
TreeNode popelem = stacktree.Pop();
if (popelem == null)
{
sb.Append(",#"); // Appending # inorder to handle same values but not subtree cases
}
else
{
sb.Append("," + popelem.val);
}
if (popelem != null)
{
stacktree.Push(popelem.right);
stacktree.Push(popelem.left);
}
}
return sb.ToString();
} public bool IsSubtree(TreeNode s, TreeNode t)
{
string spreorder = generatepreorderString(s);
string tpreorder = generatepreorderString(t); return spreorder.Contains(tpreorder);
}
}
https://leetcode.com/problems/subtree-of-another-tree/#/description
补充一个使用python的实现,思路就是使用二叉树的先序遍历,将节点和空节点存储到字符串中,然后比较t是否是s的字串。
class Solution:
s_pre = ""
t_pre = ""
def preOrder(self,root):
if root!=None:
self.s_pre += '<'+ str(root.val) + '>'
self.preOrder(root.left)
self.preOrder(root.right)
else:
self.s_pre += '<x>' def preOrder2(self,root):
if root!=None:
self.t_pre += '<' + str(root.val) + '>'
self.preOrder2(root.left)
self.preOrder2(root.right)
else:
self.t_pre += '<x>' def isSubtree(self, s: 'TreeNode', t: 'TreeNode') -> 'bool':
self.preOrder(s)
self.preOrder2(t)
return self.t_pre in self.s_pre
执行效率还是比较高的。
再补充一个双层递归的实现,我是不喜欢这种方式的,而且执行效率也低。
class Solution:
def isSubtree(self, s: TreeNode, t: TreeNode) -> bool:
if s == None:
return False
return self.isSubTreeWithRoot(s,t) or self.isSubtree(s.left,t) or self.isSubtree(s.right,t) def isSubTreeWithRoot(self,s,t):
if s == None and t == None:
return True
if s == None or t == None:
return False
if s.val != t.val:
return False
return self.isSubTreeWithRoot(s.left,t.left) and self.isSubTreeWithRoot(s.right,t.right)
leetcode572的更多相关文章
- 第26题:LeetCode572:Subtree of Another Tree另一个树的子树
题目描述 给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树.s 的一个子树包括 s 的一个节点和这个节点的所有子孙.s 也可以看做它自身的一棵子树. 示例 1: ...
- [Swift]LeetCode572. 另一个树的子树 | Subtree of Another Tree
Given two non-empty binary trees s and t, check whether tree t has exactly the same structure and no ...
- Leetcode--572. Subtree of Another Tree(easy)
Given two non-empty binary trees s and t, check whether tree t has exactly the same structure and no ...
- Leetcode572.Subtree of Another Tree另一个树的子树
给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树.s 的一个子树包括 s 的一个节点和这个节点的所有子孙.s 也可以看做它自身的一棵子树. 示例 1: 给定的树 ...
- LeetCode572. 另一个树的子树
题目 本题目一开始想要通过二叉树遍历KMP匹配,但看来实现比较复杂 不如直接暴力匹配,本题和LeetCode100.相同的树有共通之处 1 class Solution { 2 public: 3 b ...
- leetcode_二叉树篇_python
主要是深度遍历和层序遍历的递归和迭代写法. 另外注意:因为求深度可以从上到下去查 所以需要前序遍历(中左右),而高度只能从下到上去查,所以只能后序遍历(左右中). 所有题目首先考虑root否是空.有的 ...
随机推荐
- git学习笔记——查看git历史记录
1.查看Git日志: 命令:git log 默认不加参数,git日志会按照最新的日期从上往下显示 参数:-p 显示版本间的代码差异 -数字 显示部分的提交 -哈希值 显示指定的版本 2.指定查找范围: ...
- Win10 Backup&Restore Start Menu(备份还原开始菜单)
Win10 的开始菜单,不是很稳定!系统装完4天,开始乱了3次,要知道我的开始菜单全屏并且进过尽心布局的,很是心酸! 连着找了几天备份开始菜单的方法,无果!后来发现了下边两个PowerShell命令, ...
- BZOJ - 4318: OSU! (期望DP&Attention)
Description osu 是一款群众喜闻乐见的休闲软件. 我们可以把osu的规则简化与改编成以下的样子: 一共有n次操作,每次操作只有成功与失败之分,成功对应1,失败对应0,n次操作对应为1 ...
- bzoj 4827 礼物
bzoj 4827 礼物 可以看做将其中一个数列(假定为 \(a\) )都加上 \(c\) , \(c\) 可以为负数.易知这里 \(-m\leq c\leq m\). 记要求的答案为 \(ans\) ...
- Codeforces1070 2018-2019 ICPC, NEERC, Southern Subregional Contest (Online Mirror, ACM-ICPC Rules, Teams Preferred)总结
第一次打ACM比赛,和yyf两个人一起搞事情 感觉被两个学长队暴打的好惨啊 然后我一直做傻子题,yyf一直在切神仙题 然后放一波题解(部分) A. Find a Number LINK 题目大意 给你 ...
- java面试题02
1.JAVA内部使用的编码格式是(utf-8) 2. public class Threads2 implements Runnable { @Overridepublic void run() {S ...
- jquery ajax 超时设置
自:jquery ajax超时设置 var ajaxTimeoutTest = $.ajax({ url:'', //请求的URL timeout : 1000, //超时时间设置,单位毫秒 typ ...
- windows中查看端口被什么应用程序占用并删除
windows中查看端口的命令是netstat,具体用法如下: 查看端口信息时可以使用如下命令: netstat -ano 运行结果如下: 当前我的本地13067端口被占用,使用命令如下: c:\&g ...
- 【spring源码学习】spring配置的事务方式是REQUIRED,但业务层抛出TransactionRequiredException异常问题
(1)spring抛出异常的点:org.springframework.orm.jpa.EntityManagerFactoryUtils public static DataAccessExcept ...
- CMS搭建,织梦CMS使用教程
http://www.dedejs.com/ 织梦DedeCms 5.7全站去版权去广告方法(含后台) http://429006.com/article/technology/3367.htm 1. ...