制作不易,三连支持一下吧!!!
文章目录
- 前言
- 一、相同的树
- 二、单值二叉树
- 三.对称二叉树
- 四.二叉树的前序遍历
- 五.另一棵树的子树
- 六.二叉树遍历
- 总结
前言
前三篇博客我们详细介绍了树形结构,及两种特殊的树:堆和二叉树。
这篇博客我们将运用这些结构来解决问题。
一、相同的树
题目链接:. - 力扣(LeetCode)
题目描述:
思路:还是分治的思想,将一棵树分为根,左子树和右子树。
子问题:要想判断两棵树是否相同,就是要分别比较两棵树的根,左子树,右子树是否相同。
最小子问题 :两个节点都为空就返回true,其中一个为空就代表两棵树不同,返回false,如果节点的值不同就直接返回false。
代码如下:
二、单值二叉树
题目链接:. - 力扣(LeetCode)
题目描述:
思路:依然是分治思想。将一棵树分为根和左右子树
子问题:判断根节点和它的左右孩子节点的val是否相同,如果不同就返回false,相同就继续递归下去。
最小子问题:如果根节点为空就返回true。
代码实现:
三.对称二叉树
题目链接:. - 力扣(LeetCode)
题目描述:
思路: 大体思路和相同的树相似,区别是相同的树是左子树和左子树比,这里是左子树和右子树比
代码实现
四.二叉树的前序遍历
题目链接:. - 力扣(LeetCode)
题目描述:
思路: 按照前序遍历的思想,如果为空就返回,否则就存放到数组中,并且递归左右子树
代码实现:
五.另一棵树的子树
题目链接:. - 力扣(LeetCode)
题目描述:
思路:
子问题:subRoot和当前树比较,如果不相同就递归左子树和右子树。
最小子问题:由于subRoot不可能为空,我们遇到空树就返回false。
代码实现:
六. 二叉树遍历
题目链接:二叉树遍历_牛客题霸_牛客网
题目描述:
代码实现:
总结
经过这几道题目的练习,相信我们对二叉树结构的理解和分治思想的领会更上一层楼!!!