对称的二叉树
题目描述:请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
分析:
如果我们拥有一颗对称二叉树,他只需要满足,每个节点的左子树和右子树都是镜像。
所以解题思路分四步:
- 我们检测根节点是不是为 null,如果是,则它肯定是对称的,直接返回 true;
- 我们新建一个 method check,用来检测当前的左子树和右子树是不是镜像,我们从根节点往下一路检测;
- 举个例子,首先我们检测根节点的左孩子和右孩子,如果两个都是 null,说明他是镜像。但是如果有一个不为 null 或者他们的值不相等,则此时我们就可以判断已经是不对称的了。如果此时还是对称的而且左孩子和右孩子都分别还有各自的孩子,我们就继续检测。这时,我们需要判断,左孩子的左子树和右孩子的右子树是否镜像,及左孩子的右子树和右孩子的左子树是否镜像;
- 如此进入下一次循环,直到我们接触到叶节点还是镜像 return true 或者我们任意时刻发现不是镜像 return false 为止。
PS:与牛客相同!
代码:

浙公网安备 33010602011771号