求解(树的子结构问题-何海涛100题)
来源:互联网 发布:菲律宾进出口数据 编辑:程序博客网 时间:2024/05/17 08:19
下面的题目是看何海涛100题中遇到的,自己看不懂,特贴出来请大家帮忙。原文地址为http://zhedahht.blog.163.com/blog/static/25411174201011445550396/
http://zhedahht.blog.163.com/
题目:二叉树的结点定义如下:
struct TreeNode
{
int m_nValue;
TreeNode* m_pLeft;
TreeNode* m_pRight;
};
输入两棵二叉树A和B,判断树B是不是A的子结构。
例如,下图中的两棵树A和B,由于A中有一部分子树的结构和B是一样的,因此B就是A的子结构。
1 8
/ \ / \
8 7 9 2
/ \
9 2
/ \
4 7
bool HasSubtree(TreeNode* pTreeHead1, TreeNode* pTreeHead2)
{
if((pTreeHead1 == NULL && pTreeHead2 != NULL) ||
(pTreeHead1 != NULL && pTreeHead2 == NULL))
return false;
if(pTreeHead1 == NULL && pTreeHead2 == NULL)
return true;
return HasSubtreeCore(pTreeHead1, pTreeHead2);
}
bool HasSubtreeCore(TreeNode* pTreeHead1, TreeNode* pTreeHead2)
{
bool result = false;
if(pTreeHead1->m_nValue == pTreeHead2->m_nValue)
{
result = DoesTree1HaveAllNodesOfTree2(pTreeHead1, pTreeHead2);
}
if(!result && pTreeHead1->m_pLeft != NULL)
result = HasSubtreeCore(pTreeHead1->m_pLeft, pTreeHead2);
if(!result && pTreeHead1->m_pRight != NULL)
result = HasSubtreeCore(pTreeHead1->m_pRight, pTreeHead2);
return result;
}
bool DoesTree1HaveAllNodesOfTree2(TreeNode* pTreeHead1, TreeNode* pTreeHead2)
{
if(pTreeHead2 == NULL)【此处是什么意思?】
return true;
if(pTreeHead1 == NULL)【此处是什么意思?】
return false;
if(pTreeHead1->m_nValue != pTreeHead2->m_nValue)
return false;
return DoesTree1HaveAllNodesOfTree2(pTreeHead1->m_pLeft, pTreeHead2->m_pLeft) &&
DoesTree1HaveAllNodesOfTree2(pTreeHead1->m_pRight, pTreeHead2->m_pRight);
}
接触C++虽然有一段时间了,但是上面的程序依然有地方看不懂,请师兄师姐学者指导!
- 求解(树的子结构问题-何海涛100题)
- 何海涛的博客
- 扑克的顺子问题(转自何海涛)
- 何海涛博客【算法题】
- 利用递归实现栈的逆转(转何海涛)
- 编程技术面试的五大要点 文/何海涛
- 专访何海涛:“不正经”程序员的进阶之路
- 树的子结构问题
- 何海涛算法面试题感悟之三:子数组…
- 最长递增子序列问题的求解
- 最长递增子序列问题的求解
- 最长子序列的问题求解
- 最长递增子序列问题的求解
- 最大子序列和问题的求解
- 最长递增子序列问题的求解
- 最长递增子序列问题的求解
- 最长递增子序列问题的求解
- 最长递增子序列问题的求解
- 电影TS、TC、SCR、R5、BD、HD等版本是什么意思(转)
- 关于Block的copy和循环引用的问题
- WCF 使用 Entity Framework 配合 Unity 进行 IOC AOP 的实现
- 基于MPMoviePlayerController实现的视频播放的总结
- JAVA的静态变量、静态方法、静态类
- 求解(树的子结构问题-何海涛100题)
- BT5R3被最新的Kali替代!!
- POJ 2528 Mayor's posters
- 打听nofollow标签能力做好网站seo优化
- 安装多个VS 出现这个问题
- 有什么样的羽毛球品牌可供选择?
- tablefooterview的显示问题 解决方案
- 复撸C系列(3)-文件基础IO
- 字符串的处理。Split(分割),Substring(截取),Contains(包含),Replace(替换),StartsWith,EndsWith