如何判断一个树是不是另外一个二叉树的子树呢?

问题描述

如何判断一个树是不是另外一个二叉树的子树呢?
请教大神们一个数据结构的问题,才学,琢磨很久没想出来

解决方案

//判断root2是不是root1开头的子结构

boolIsSubTree(BiTreeNode *root1BiTreeNode *root2)

{

   //先判断root2   if(root2==NULL)          return true;   if(root1==NULL)          return false;       if(root1->data!=root2->data)          return false;   returnIsSubTree(root1->LCroot2->LC) &&IsSubTree(root1->RCroot2->RC);

}

//递归查找以root1为节点的树中,是否有和root2相同的值,如果有,则调用IsSubTree(root1 root2);

boolCheckIfSubTree(BiTreeNode *root1BiTreeNode *root2)

{

   if(root1==NULL)          return false;   bool result=false;   if(root1->data==root2->data)          result=IsSubTree(root1root2);   if(result==false)          result=CheckIfSubTree(root1->LCroot2);   if(result==false)          result=CheckIfSubTree(root1->RCroot2);   return result;

}

解决方案二:
首先在二叉树p中遍历寻找c的根节点,如果找到了,从这个节点开始遍历二叉树p,并且判定如果所有p对应的子节点都在c中出现,并且c不存在的p也不存在。就符合条件。

解决方案三:
树的子结构——判断B树是不是A树的一颗子树
判断一个树是否为另一棵树的子树
判断一个二叉树是否是另一个的子树

时间: 2024-10-26 05:26:33

如何判断一个树是不是另外一个二叉树的子树呢?的相关文章

JS判断浏览器是否支持某一个CSS3属性的方法

 1.引子 css3的出现让浏览器的表现更加的丰富多彩,表现冲击最大的就是动画了,在日常书写动画的时候,很有必要去事先判断浏览器是否支持,尤其是在写CSS3动画库的时候.比如transition的animation-play-state,就只有部分浏览器支持. 2.检测方法 下面的方法可以使用脚本判断浏览器是否支持某一个CSS3属性: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

如何判断assets下的某一个文件是否存在

问题描述 如何判断assets下的某一个文件是否存在 if ((new File(""file://android_assets/aa.mp3"")).exists()) {}if ((new File(""aa.mp3"")).exists()) {}以上方法都无法判断 解决方案 感谢以上两位朋友的回答,@franzhong的方式我用过,也是可以的下面我用的方法, /** * 加载本地图片 * @param url * @r

字符处理-判断用户输入的是一个单词,还是多个单词,用什么方法好点

问题描述 判断用户输入的是一个单词,还是多个单词,用什么方法好点 判断一个用户的输入是一个单词,还是多个单词,是去判断里面的空格好呢,还是用正则去判断... 解决方案 判读空格吧 正则表达式不好进行判断 解决方案二: 感觉判断里面的空格好,两空格之间有值的为一个单词,比较通用-- 解决方案三: 用空格比较简单一些 复杂的匹配要求可以用正则 解决方案四: 用正则不是还是判断是不是有空格么 s 难道还有别的 解决方案五: 如果没有什么特殊的要求,用空格来判断比较好! 解决方案六: 一般编程语言中包含

把一个树菜单的2个值分别用2棵不同的树菜单表示

问题描述 把一个树菜单的2个值分别用2棵不同的树菜单表示 把一个树菜单的2个值分别用2棵不同的树菜单表示,树的根是一样的 解决方案 什么意思? 用List里面还是list就行了,外层是树的根,里层的是树的枝就可以了 解决方案二: 也就是定义一个List集合,集合的类型还是List集合 解决方案三: 树形菜单的值是从xml文件中读取的,我把他的值加到不同的树形菜单上,但是最后都显示成一棵树,我觉得是根节点相同就会显示到一棵树上,怎样解决??? 解决方案四: 树形菜单的值是从xml文件中读取的,我把

c-求 linux 标准 C 语言判断2个字符串的一个函数

问题描述 求 linux 标准 C 语言判断2个字符串的一个函数 函数的原型为: int diff_str(const char * a, const char * b); 主要是用来处理当A和B 中存在有符号点 "." 或星号 "*"时的判断关系. 星号出现的(位置不定),且 (不限制长度) 匹配 [a-z0-9] 中包含的字符. 注意: 星号不能匹配 "." 例如: a="hello*world"; b="hel

javascript-如何判断点击了另外一个页面的button按钮

问题描述 如何判断点击了另外一个页面的button按钮 有2个页面,页面1有一个确定按钮,如何在页面2判断是否点击了页面1的按钮. 解决方案 用插件吧触发点击事件记录到缓存参考链接 解决方案二: 可以在seesion中记录,还可以在页面1注册一个回调,点击后触发,页面2就收到了 解决方案三: 你页面1,2什么关系,1中打开2还是1iframe的2?搞清楚关系就很容易判断,如果没有关系需要通过服务器做中转 iframe和父页,window.open打开页面之间的引用 解决方案四: 刚回家 古都河村

JS判断浏览器是否支持某一个CSS3属性的方法_javascript技巧

1.引子 css3的出现让浏览器的表现更加的丰富多彩,表现冲击最大的就是动画了,在日常书写动画的时候,很有必要去事先判断浏览器是否支持,尤其是在写CSS3动画库的时候.比如transition的animation-play-state,就只有部分浏览器支持. 2.检测方法 下面的方法可以使用脚本判断浏览器是否支持某一个CSS3属性: /** * 判断浏览器是否支持某一个CSS3属性 * @param {String} 属性名称 * @return {Boolean} true/false * @

PHP简单判断字符串是否包含另一个字符串的方法_php技巧

本文实例讲述了PHP简单判断字符串是否包含另一个字符串的方法.分享给大家供大家参考,具体如下: 在使用PHP判断某字符串中是否包含一个简单的子字符串的时候,我们通常会用到strpos()或者stristr()这两个函数,可是偏偏如果这个字符串的位置如果是在索引0位置,也就是说在要匹配的字符串的最开始,则会出问题. 当然我们还是有解决的方法的,这里就有一个笨办法,但是比较好用,无论中英文,标点符号都适用. 代码如下: function checkStr($str,$target) { $tmpAr

js判断一个字符串是否包含一个子串的方法_javascript技巧

本文实例讲述了js判断一个字符串是否包含一个子串的方法.分享给大家供大家参考.具体如下: 在我们前端日常开发中,经常会遇到判断一个字符串中是否包含某个子串,这里我们将去探究一些解决此种需求的方法以及正确的使用它们.理想情况下,我们要找的是一个能匹配我们的目的(if x contains y)的方法,并返回true或false. 一.String.prototype.indexOf和String.prototype.lastIndexOf 这两个方法,可能是我们最容易想到的,如果包含子串,则返回大