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

二叉树--OJ2

1.判断两棵树是否相同

    bool sametree(TreeNode* root1,TreeNode* root2){if(root1==NULL&&root2==NULL)return 1;if(root1==NULL||root2==NULL)return 0;if(root1->val!=root2->val)return 0;return sametree(root1->left,root2->left)&&sametree(root1->right,root2->right)}

2.另一棵树的子树

在这里插入图片描述

class Solution {
public:TreeNode* PreOrder(TreeNode* root,int a) {if (root == NULL) {return NULL;}if(root->val==a){return root;}auto r1=PreOrder(root->left,a);if(r1)return r1;auto r2=PreOrder(root->right,a);return r2;}bool sametree(TreeNode* root1, TreeNode* root2) {if (root1 == NULL && root2 == NULL)return 1;if (root1 == NULL || root2 == NULL)return 0;if(root1->val!=root2->val)return 0;return sametree(root1->left, root2->left) &&sametree(root1->right, root2->right);}bool isSubtree(TreeNode* root, TreeNode* subRoot) {int a=subRoot->val;while(auto b=PreOrder(root, a)){if(sametree(b, subRoot)){return 1;}b->val=(!a);}return 0;}
};

法二

class Solution {
public:bool sametree(TreeNode* root1, TreeNode* root2) {if (root1 == NULL && root2 == NULL)return 1;if (root1 == NULL || root2 == NULL)return 0;if(root1->val!=root2->val)return 0;return sametree(root1->left, root2->left) &&sametree(root1->right, root2->right);}bool isSubtree(TreeNode* root, TreeNode* subRoot) {if(root==NULL)return 0;if(sametree(root, subRoot))return 1;return isSubtree(root->left, subRoot)||isSubtree(root->right, subRoot);}
};

对称二叉树

在这里插入图片描述

class Solution {
public:bool sametree(TreeNode* root1, TreeNode* root2) {if (root1 == NULL && root2 == NULL)return 1;if (root1 == NULL || root2 == NULL)return 0;if(root1->val!=root2->val)return 0;return sametree(root1->left, root2->left) &&sametree(root1->right, root2->right);}bool isSubtree(TreeNode* root, TreeNode* subRoot) {if(root==NULL)return 0;if(sametree(root, subRoot))return 1;return isSubtree(root->left, subRoot)||isSubtree(root->right, subRoot);}
};
http://www.xdnf.cn/news/8916.html

相关文章:

  • Android组件化框架设计与实践
  • 计算机视觉---YOLOv1
  • Java 中的 super 关键字
  • 17. Qt系统相关:文件操作
  • 【Python 集合 Set 】全面学习指南
  • 【linux】mount命令
  • 卷积神经网络(CNN)深度讲解
  • NextJS 项目,编译成功,但是启动失败的解决方案
  • [Java恶补day6] 15. 三数之和
  • Missashe考研日记—Day44-Day50
  • 进程守护服务优点
  • 快速扩容VHD文件的DiskPart命令指南
  • C49-函数指针
  • Lambda 表达式遍历集合的原理
  • 工作流长任务处置方案
  • nginx对webdav支持不好的解决办法
  • 人工智能100问☞第32问:什么是迁移学习?
  • Springboot怎么解决循环依赖
  • 如何使用pyinstaller打包python脚本?
  • Jetpack Compose 中更新应用语言
  • c++树状数组模板Fenwick (Binary Indexed) Trees
  • 基于TypeScript的全栈待办事项应用Demo
  • Day 19
  • 力扣HOT100之回溯:78. 子集
  • 【linux】systemct创建服务
  • 【C++】21. 红黑树的实现
  • 面试专栏04-SpringCloud
  • 相机内参 opencv
  • 基于Web组件实现随机抽奖
  • 云手机安卓12哪个好?掌派云手机安卓12系统上线,开启流畅体验新纪元