二叉树模板套题——相同的树的应用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树模板套题——相同的树的应用相关的知识,希望对你有一定的参考价值。
(文章目录)
力扣100. 相同的树
/**
* Definition for a binary tree node.
* struct TreeNode
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* ;
*/
bool isSameTree(struct TreeNode* p, struct TreeNode* q)
if(p==NULL&&q==NULL)//两者都为空
return true;
if(p==NULL||q==NULL)//只有一个为空时 返回false
return false;
if(p->val!=q->val)//两者值不相同时
return false;
return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right);
递归展开图
力扣572. 另一棵树的子树
/**
* Definition for a binary tree node.
* struct TreeNode
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* ;
*/
bool istree(struct TreeNode*p,struct TreeNode*q)//判断两颗树是否相同
if(p==NULL&&q==NULL)
return true;
if(p==NULL||q==NULL)
return false;
if(p->val!=q->val)
return false;
return istree(p->left,q->left)&&istree(p->right,q->right);
bool isSubtree(struct TreeNode* root, struct TreeNode* subRoot)
if(root==NULL)//subroot不为空,所以root为空 返回false
return false;
if(istree(root,subRoot)==true) //如果此时的子树与subroot相同
return true;
//左右子树有一个满足条件就为true
return isSubtree(root->left,subRoot)||isSubtree(root->right,subRoot);
递归展开图
力扣101. 对称二叉树
/**
* Definition for a binary tree node.
* struct TreeNode
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* ;
*/
bool _isSymmetric(struct TreeNode*root1,struct TreeNode*root2)//判断左右子树是否相同
if(root1==NULL&&root2==NULL)
return true;
if(root1==NULL||root2==NULL)
return false;
if(root1->val!=root2->val)
return false;
return _isSymmetric(root1->left,root2->right)&&_isSymmetric(root1->right,root2->left);
bool isSymmetric(struct TreeNode* root)
if(root==NULL)
return false;
return _isSymmetric(root->left,root->right);
递归展开图
以上是关于二叉树模板套题——相同的树的应用的主要内容,如果未能解决你的问题,请参考以下文章
二叉树有关习题整理 144二叉树的前序遍历 100相同的树 101对称二叉树 110平衡二叉树 958二叉树的完全性检验 662二叉树的最大宽度