树的子结构
来源:互联网 发布:数据恢复软件恢复率高 编辑:程序博客网 时间:2024/05/23 19:19
1 /*
2 输入两课二叉树A和B,判断B是不是A的子结构。二叉树的定义如下:
3 struct BinaryTreeNode
4 {
5 int m_nValue;
6 BinaryTreeNode* m_pLeft;
7 BinaryTreeNode* m_pRight;
8 };
9 第一步在树A中查找与根结点的值一样的结点,这实际上就是树的遍历。对二叉树这种数据结构熟悉的读者自然知道可以用递归的方法去遍历,也可以用循环的方法去遍历。由于递归的代码> 实现比较简洁,面试时如果没有特别的要求,我们通常都会采用递归的方式,
10 第二步是判断树A中以R为根结点的子树是不是和树B具有相同的结构,同样也是用递归的方法来解决,如果,结点R的值和树B的根结点不相同,则以R为根结点的子树和树B肯定不具有相同的> 结点。如果它们的值相同,则递归地判断它们各自的左右结点的值是不是相同。递归的终止条件是我们到达了树A和树B的叶结点。
11 */
2 输入两课二叉树A和B,判断B是不是A的子结构。二叉树的定义如下:
3 struct BinaryTreeNode
4 {
5 int m_nValue;
6 BinaryTreeNode* m_pLeft;
7 BinaryTreeNode* m_pRight;
8 };
9 第一步在树A中查找与根结点的值一样的结点,这实际上就是树的遍历。对二叉树这种数据结构熟悉的读者自然知道可以用递归的方法去遍历,也可以用循环的方法去遍历。由于递归的代码> 实现比较简洁,面试时如果没有特别的要求,我们通常都会采用递归的方式,
10 第二步是判断树A中以R为根结点的子树是不是和树B具有相同的结构,同样也是用递归的方法来解决,如果,结点R的值和树B的根结点不相同,则以R为根结点的子树和树B肯定不具有相同的> 结点。如果它们的值相同,则递归地判断它们各自的左右结点的值是不是相同。递归的终止条件是我们到达了树A和树B的叶结点。
11 */
12
13 bool HasSubtree(BinaryTreeNode* pRoot1,BinaryTreeNode* pRoot2) 14 { 15 bool result = false; 16 17 if(pRoot1 != NULL && pRoot2 != NULL) 18 { 19 /如果根节点对应的值刚好是B树根节点的值 20 if(pRoot1->m_nValue == pRoot2->m_nValue) 21 result = DoesTree1HaveTree2(pRoot1,pRoot2); 22 if(!result) 23 result = HasSubtree(pRoot1->m_pLeft,pRoot2); //去A树的左子树寻找 24 if(!result) 25 result = HasSubtree(pRoot1->m_Right,pRoot2); //去A树的右子树寻找 26 } 27 return result; 28 } 29 30 bool DoesTree1HaveTree2(BinaryTreeNode* pRoot1,BinaryTreeNode* pRoot2) 31 { 32 if(pRoot2 == NULL)//考虑边界条件 33 return true; 34 35 if(pRoot1 == NULL) 36 return false; 37 38 if(pRoot1->m_nValue != pRoot2->m_nValue) 39 return false; 40 41 return DoesTree1HaveTree2(pRoot1->m_pLeft,pRoot2->m_pLeft) && DoesTree1HaveTree2(pRoot1->m_pRight,pRoot2->m_pRight); 42 }
阅读全文
0 0
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 头文件
- linux下的wc命令详解
- MySQL索引
- 51nod 1205 流水线调度
- Ubuntu 14.04安装配置NFS服务器
- 树的子结构
- BootCamp 分区 作死+修复记
- 大型网站系统与JAVA中间件学习
- hadoop集群查看进程情况
- numpy安装
- MySQL 对于千万级的大表要怎么优化?
- 第八章方差分析以及线性回归(2)
- Python网络编程之带select的异步IO
- python 基础