⭐ 作者:小胡_不糊涂
🌱 作者主页:小胡_不糊涂的个人主页
📀 收录专栏:二叉树
💖 持续更文,关注博主少走弯路,谢谢大家支持 💖
文章目录
- 一、100. 相同的树
- 1. 题目简介
- 2. 代码
- 3. 运行结果
- 二、572. 另一棵树的子树
- 1. 题目简介
- 2. 代码
- 3. 运行结果
- 三、226. 翻转二叉树
- 1. 题目简介
- 2. 代码
- 3. 运行结果
- 四、110平衡二叉树
- 1.题目介绍
- 2. 代码
- 3. 运行结果
一、100. 相同的树
1. 题目简介
给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
2. 代码
class Solution {public boolean isSameTree(TreeNode p, TreeNode q) {if(p==null&&q==null){return true;//都为空}else if(p==null || q==null){return false;//一个为空}else if(p.val!=q.val){return false;//根节点是否相同}else{return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);//比较左右节点是否相同}}
}
3. 运行结果
二、572. 另一棵树的子树
1. 题目简介
给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。
二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子树。
2. 代码
class Solution {public boolean isSubtree(TreeNode r, TreeNode s) {if(s==null) return true;if(r==null) return false;return isSubtree(r.left,s)||isSubtree(r.right,s)||isSameTree(r,s);}public boolean isSameTree(TreeNode p,TreeNode q){if(p==null&&q==null){return true;}else if(p==null || q==null){return false;}else if(p.val!=q.val){return false;}else{return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);}}
}
3. 运行结果
三、226. 翻转二叉树
1. 题目简介
给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点
2. 代码
class Solution {//翻转二叉树public TreeNode invertTree(TreeNode root) {if(root==null){return null;}TreeNode tmp=root.left;root.left=root.right;root.right=tmp;invertTree(root.left);invertTree(root.right);return root;}
}
3. 运行结果
四、110平衡二叉树
1.题目介绍
给定一个二叉树,判断它是否是 平衡二叉树(平衡二叉树 是指该树所有节点的左右子树的深度相差不超过 1)
2. 代码
class Solution {//平衡二叉树public boolean isBalanced(TreeNode root) {if(root==null){return true;}else{return Math.abs(height(root.left)-height(root.right))<=1&&isBalanced(root.left)&&isBalanced(root.right);}}public int height(TreeNode r){if(r==null){return 0;}else{return Math.max(height(r.left),height(r.right))+1;}}
}
3. 运行结果
来源:力扣(LeetCode),著作归力扣网络所有。
如果本篇文章对你有所启发的话,希望可以多多支持作者,谢谢大家!