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否是空.有的 ...
随机推荐
- Jmeter-Threads(Users)
setUp Thread Group---测试开始前的准备操作,每次测试前都会执行 A special type of ThreadGroup that can be utilized to perf ...
- hiho1601最大分数 DP
#1601 : 最大得分 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho在玩一个游戏.给定一个数组A=[A1, A2, ... AN],小Hi可以指定M个 ...
- BZOJ4245 ONTAK2015 OR-XOR 【位运算+贪心】*
BZOJ4245 ONTAK2015 OR-XOR Description 给定一个长度为n的序列a[1],a[2],…,a[n],请将它划分为m段连续的区间,设第i段的费用c[i]为该段内所有数字的 ...
- BZOJ1486 HNOI2009 最小圈 【01分数规划】
BZOJ1486 HNOI2009 最小圈 Description 应该算是01分数规划的裸板题了吧..但是第一次写还是遇到了一些困难,vis数组不清零之类的 假设一个答案成立,那么一定可以找到一个环 ...
- 使用stsadm.exe工具实现SharePoint网站备份还原
一.过程描述: 首先在源站点机器上用stsadm.exe备份网站集,讲备份文件拷贝到目标服务器(也可直接在备份时配置备份路径为目标机器路径),然后执行还原操作:首先新建网站集,然后用SharePoin ...
- CentOS解压rar文件
默认不能解压rar文件. 进官网下载:http://www.rarsoft.com/download.htm RAR 5.40 for Linux x64 安装: # tar -zxvf rarlin ...
- 【spring源码学习】spring集成orm数据框架
[一]简易的数据源配置 (1)配置文件 <!--springJdbcTemplemate数据操作配置信息 --> <bean id="driver" class= ...
- WPF 竖排文字(转)
---恢复内容开始--- 想做一个WPF 文字竖排 类似上图.用在TabItem的header上面. <TextBlock FontSize="30" Text=" ...
- Siddhi cep java 集成简单使用
Siddhi 是一个开源的cep (Complex Event Processing)类库,有一个明显的例子是uber 的事件处理,具体可以google 几张参考cep 以及siddhi 图 java ...
- macOS -- 为什么XAMPP启动后输localhost跳转到http://localhost/dashboard?
在XAMPP环境下,当我们在地址栏输入'localhost'的时候,进入的不是htdocs根目录下,而是直接跳转到了http://localhost/dashboard?下. 这是因为在xamppfi ...