对称的二叉树

题目描述:请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。

分析:

如果我们拥有一颗对称二叉树,他只需要满足,每个节点的左子树和右子树都是镜像。
所以解题思路分四步:

  1. 我们检测根节点是不是为 null,如果是,则它肯定是对称的,直接返回 true;
  2. 我们新建一个 method check,用来检测当前的左子树和右子树是不是镜像,我们从根节点往下一路检测;
  3. 举个例子,首先我们检测根节点的左孩子和右孩子,如果两个都是 null,说明他是镜像。但是如果有一个不为 null 或者他们的值不相等,则此时我们就可以判断已经是不对称的了。如果此时还是对称的而且左孩子和右孩子都分别还有各自的孩子,我们就继续检测。这时,我们需要判断,左孩子的左子树和右孩子的右子树是否镜像,及左孩子的右子树和右孩子的左子树是否镜像;
  4. 如此进入下一次循环,直到我们接触到叶节点还是镜像 return true 或者我们任意时刻发现不是镜像 return false 为止。

PS:与牛客相同!

代码:

 

posted on 2020-08-30 16:03  _那些你很冒险的梦  阅读(91)  评论(0)    收藏  举报

导航