判断数A中是否存在一棵同构于B的子树
2016-04-14 21:44
465 查看
树的同构:我理解的同构应该是树若干个结点平行交换形成与原树结构相同的树。但看到网上的一些实现都是认为树的同构必须是树的先序遍历是相同的。先贴上自己的代码。
先序遍历:即某节点---->左子树----->右子树。采用递归来遍历输出先序序列。
string.find()函数:
string中 find()的应用 (rfind() 类似,只是从反向查找)
原型如下:
(1)size_t find (const string& str, size_t pos = 0) const; //查找对象--string类对象
(2)size_t find (const char* s, size_t pos = 0) const; //查找对象--字符串
(3)size_t find (const char* s, size_t pos, size_t n) const; //查找对象--字符串的前n个字符
(4)size_t find (char c, size_t pos = 0) const; //查找对象--字符
结果:找到 -- 返回 第一个字符的索引
没找到--返回 string::npos
to_string():将整型数转化为string类型的。
/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ class IdenticalTree { public: bool chkIdentical(TreeNode* A, TreeNode* B) { // write code here if(A==NULL||B==NULL) { return false; } string s1; string s2; s1=toTranslate(A); s2=toTranslate(B); if(string::npos!=s1.find(s2))return true; return false; } string toTranslate(TreeNode *A) { if(A==NULL)return "#!"; string s; s=to_string(A->val)+"!"; s+=toTranslate(A->left); s+=toTranslate(A->right); return s; } };
bool chkIdentical(TreeNode* A, TreeNode* B)上面的函数就是比较A中是否存在一棵同构于B的子树。其实程序的结构为:对A、B分别进行先序遍历,求得其先序遍历序列。然后利用string类型的find()函数查找s1序列中是否囊括s2序列,由此判断出A中是否存在一棵同构于B的子树。记录一下几个知识点:
先序遍历:即某节点---->左子树----->右子树。采用递归来遍历输出先序序列。
string.find()函数:
string中 find()的应用 (rfind() 类似,只是从反向查找)
原型如下:
(1)size_t find (const string& str, size_t pos = 0) const; //查找对象--string类对象
(2)size_t find (const char* s, size_t pos = 0) const; //查找对象--字符串
(3)size_t find (const char* s, size_t pos, size_t n) const; //查找对象--字符串的前n个字符
(4)size_t find (char c, size_t pos = 0) const; //查找对象--字符
结果:找到 -- 返回 第一个字符的索引
没找到--返回 string::npos
to_string():将整型数转化为string类型的。
相关文章推荐
- p587有限自动机
- java中文乱码解决之道(三)-----编码详情:伟大的创想---Unicode编码
- [php-src]一个Php扩展的结构
- 软件工程概论课堂作业3
- 小谈业务应用架构
- here we go
- 笔记练习:《Javascript入门经典(第5版)》page233_19.8Practice
- 数据库事务的四个特性
- MyString类的实现
- java中文乱码解决之道(二)-----字符编码详解:基础知识 + ASCII + GB**
- 堆排序
- 复利计算结对2.0
- 好累
- TopologyBuilder
- AVL树插入和删除
- C语言-郝斌笔记-003数据类型
- 函数的调用优化
- java输入学生成绩
- java怎么连接mysql数据库
- Linux---centos搭建SVN服务器