【面试题】剑指Offer-18-判断一颗树是否为另一颗树的子树
来源:互联网 发布:淘宝话术技巧 编辑:程序博客网 时间:2024/06/04 05:09
题目概述
解题思路
这里用到递归的思想
先递归【HasSubTree】找到和子树相同值的节点
然后再用另一个递归函数【DoseTree1HasTree2】判断是否相等
如果遍历到SubT子树的叶子结点,则匹配成功
如果SrcT为空,则匹配没有成功
如果都存在,则判断左子树和右子树
根据左子树和右子树的返回结果判断此时是否完全匹配
如果不匹配,则继续【HasSubTree】找值相同的节点
代码实现
bool DoesTree1HasTree2(const TreeNode* srcT, const TreeNode* subT){//如果子树到了叶子节点,表示成功if (subT == NULL)return true;//表示没有匹配成功if (srcT == NULL)return false;bool retLeft = DoesTree1HasTree2(srcT->_left, subT->_left);bool retRight = DoesTree1HasTree2(srcT->_right, subT->_right);return retLeft && retRight;}bool HasSubTree(const TreeNode* srcT, const TreeNode* subT){if (subT == NULL)return false;bool ret = false;if (srcT != NULL){if (srcT->_data == subT->_data){ret = DoesTree1HasTree2(srcT, subT);}if (!ret)ret = HasSubTree(srcT->_left, subT);if (!ret)ret = HasSubTree(srcT->_right, subT);}return ret;}
1 0
- 【面试题】剑指Offer-18-判断一颗树是否为另一颗树的子树
- 二叉树面试题之判断一棵树是否为另一棵树的子树
- 判断一个树是否为另一棵树的子树
- 判断一棵树是否为另一棵树的子树
- 判断一棵树为另一颗树的子树
- 【面试题】剑指Offer-39-求二叉树的深度和判断一颗树是否为平衡二叉树
- 如何判断一棵二叉树树是否为另一棵二叉树的子树
- 判断一棵二叉树是否为另一棵二叉树的子树,Python实现
- 海量数据:判断一棵树是否为另一棵树的子树
- 判断一棵树是否是另一棵树的子树
- 判断一棵树是否是另一棵树的子树
- 判断一棵树是否是另一棵树的子树
- 一棵树是否为另一棵树的子树
- 判断一颗二叉树是是否是另一颗树的子树。比如tree2是tree1的子树
- 剑指offer面试题18判断一个二叉树是否包含另一个的递归算法
- 剑指offer 面试题18 判断二叉树B是否是A的子结构
- 判断一颗二叉树是是否是另一颗树的子树
- 判断一颗二叉树是否是另一颗树的子树
- Android开发概要记录
- idea快捷键使用
- Android自定义星星评分控件
- mongo 增加索引
- C#中out的使用和数组型参数
- 【面试题】剑指Offer-18-判断一颗树是否为另一颗树的子树
- eclipse工程转到androidstudio中
- 简单的图文混排功能
- 关于Structs中ActionForm的日期格式的转换
- LeetCode--Number Complement
- python学习语法
- finally中使用return会吃掉catch中抛出的异常&finally中抛出的异常会吃掉catch中的return
- solr系列二:solr导入数据库数据
- java封装的一个小问题