给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。
示例 1:
给定的树 s:
3
/ \
4 5
/ \
1 2
给定的树 t:
4
/ \
1 2
返回 true,因为 t 与 s 的一个子树拥有相同的结构和节点值。
复制代码
示例 2:
给定的树 s:
3
/ \
4 5
/ \
1 2
/
0
给定的树 t:
4
/ \
1 2
返回 false。
复制代码
题解:这道题让我们判断一棵树是否为另外一棵树的子树,子树必须是从某个节点开始,然后到叶子节点的,那么就可以转为比较两棵树是否相同的问题了,遍历其中一棵树s,判断以某个节点开始的树是否等于另外一棵树t。
//判断以当前节点开始的二叉树与t是否相同,以及其左右节点开始的是否相同
//两个都为空,直接返回true
//其中一个为空,返回false
//比较当前节点是否相同
//比较其左右子树是否相同