剑指Offer28:对称的二叉树

水深无声 2022-02-12 15:13 198阅读 0赞

题目:请实现一个函数,用来判断一棵二叉树是否是对称的,如果一棵二叉树和它的镜像一样,那么它是对称的。

20190429091323312.png

这里第一颗树是对齐的,第二颗树不是对齐的,第三颗树也不是。

通常二叉树有前序,中序,后序遍历方法,而书上提出以前序对称的遍历方法,即第一颗树前序遍历的

顺序是 8,6,5,7,6,7,5 而前序对称的遍历(根右左次序) 8,6,5,7,6,7,5 即和前序遍历一样,但是用这个方法去遍历第三颗树这样就不对了,因为都是7777777,所以这里把每一层的null节点算进去了。

即7,7,null,7,7,7,7.

  1. public boolean isSymmetric(TreeNode root) {
  2. return isSyme(root,root); //传了2个root
  3. }
  4. public boolean isSyme(TreeNode root1,TreeNode root2){
  5. if(root1==null&&root2==null){ //当且传入的2个root为空,return true.
  6. return true;
  7. }
  8. if(root1==null|| root2==null){ //只有一个为空,另外没有即不堆成return false
  9. return false;
  10. }
  11. if(root1.val!=root2.val){ //存在对称的点,但是值不等 return false
  12. return false;
  13. }
  14. //进行左右对称的子递归
  15. return isSyme(root1.left,root2.right)&&isSyme(root1.right,root2.left);
  16. }

发表评论

表情:
评论列表 (有 0 条评论,198人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Offer 28. 对称

    请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。 例如,二叉树 \[1,2,2,3,4,4,3\] 是对称的。 ![在这里插入