当前位置: 首页 > news >正文

输入两棵二叉树A,B,判断B是不是A的子结构。(我们约定空树不是任意一个树的子结构)

题目介绍

输入两棵二叉树A,B,判断B是不是A的子结构。(我们约定空树不是任意一个树的子结构)

题目分析

这个可以通过依次遍历的方法,采用递归来完成计算。

源代码

/*
struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}
};*/
class Solution 
{
public:bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2){int res=0;if(pRoot1!=NULL&&pRoot2!=NULL){if(pRoot1->val==pRoot2->val){res=compare_tree(pRoot1,pRoot2);}if(!res){res=HasSubtree(pRoot1->left,pRoot2);}if(!res){res=HasSubtree(pRoot1->right,pRoot2);}}return res;}bool compare_tree(TreeNode* pRoot1, TreeNode* pRoot2){if(pRoot2 == NULL){return true;}if(pRoot1 == NULL){return false;}if(pRoot1->val == pRoot2->val){return compare_tree(pRoot1->left,pRoot2->left) && compare_tree(pRoot1->right,pRoot2->right);}return false;}
};

http://www.taodudu.cc/news/show-1782069.html

相关文章:

  • 服务器2080ti驱动的卸载与安装
  • QT实现Home框架的两种方式
  • pdf转word,结果为什么是图片?怎么才能转成可编辑的文字?
  • Linux提示:mount: 未知的文件系统类型“ntfs”
  • uni-app安卓本地打包个推图标配置
  • leetcode21-Merge Two Sorted Lists
  • 操作给定的二叉树,将其变换为源二叉树的镜像。
  • 01背包和动态规划
  • 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,
  • 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。
  • 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了
  • 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
  • 在一个字符串中找到第一个只出现一次的字符,并返回它的位置
  • 统计一个数字在排序数组中出现的次数。
  • 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字(简单易懂)
  • 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
  • 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。
  • LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话(简单易懂)
  • 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。
  • 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1](简单易懂)
  • 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符go时,第一个只出现一次的字符是g。当从该字符流中读出前六个字符“google时,,,(C++实现)
  • 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。(C++实现,非常简单明了)
  • 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1-2-3-3-4-4-5 处理后为 1-2-5(非常简单明了)
  • 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
  • 使用国内源来安装pytorch(速度很快)
  • 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为...
  • 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。
  • python自动搜索最佳超参数之GridSearchCV函数
  • 请实现一个函数,将一个字符串中的每个空格替换成...
  • 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
  • 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
  • 3D Bounding Box Estimation Using Deep Learning and Geometry
  • Deep manta算法解析
  • GS3D An Efficient 3D Object Detection Framework for Autonomous Driving算法解析
  • python机器学习库xgboost使用调参
  • LightGBM算法解析