1、单值二叉树
如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。
只有给定的树是单值二叉树,才返回 true,否则返回 false。
解题思路:
使用递归的思想,判断当前节点的值是否与其左孩子和右孩子节点的值都相同,只要有一个节点满足,就返回false。
代码:
2、二叉树的深度
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
示例:
给定二叉树 [3,9,20,null,null,15,7]
返回它的最大深度为:3
解题思路:
使用递归的思想,一个节点的深度可以看成是由其左子树和右子树中深度大的那个+1。
代码:
3、翻转二叉树
翻转一棵二叉树。
解题思路:
使用递归的思想,需要判断是否是空树,不是空树就从根节点开始遍历,交换它的左右孩子。
代码:
4、相同的树
给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
解题思路:
使用递归的思想,首先要判断树p和树q是否是空树,然后判断他们的值,则递归对子结点做同样操作。
代码:
5、另一颗个树的子树
给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。
解题思路:
使用递归的思想,需要在s为根节点的树中找到与t相同的根节点,t就等于s本身,或者t是s的左子树的子树,又或者t是s的右子树的子树,然后以与t相同的根节点开始,直到叶子节点,判断两个子树是否完全相同
代码: