一:题目
二:代码
三:递归展开
第一种模型:
递归展开图:
左:
右:
第二种模型及其递归展开图:
解释:
递归思路即:根相同,左子树相同,右子树相同 即两棵树相同,
如果根相等,则递归地对左右子树进行相同的检查。
如果两个树都为空(即两个指针都为NULL
),则两棵树相同,返回true
。
1:如果其中一个树为空,而另一个不为空,则两棵树不同,返回false
2:这个if由于在第一个if之后,所以不会存在两边都成立的情况。
3:只会让两个都不为空的情况通过
如果两个树都不为空,但它们的根节点的值不同,则两棵树不同,返回false。
如果根节点的值相同,则递归地比较左子树和右子树是否相同。
递归的终止条件是:
1:两棵树都为空,返回true。
2:其中一棵树为空,返回false。
3:两棵树的对应节点值不同,返回false。
最后的return && 如果左边已经是假,不会在执行右边了,这是&&的性质