剑指 Offer 28. 对称的二叉树

2022/4/12 23:17:51

本文主要是介绍剑指 Offer 28. 对称的二叉树,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

题目链接:

剑指 Offer 28. 对称的二叉树

思路:本题采用递归的方式来进行解决,一个树要满足对称,则说明左结点的左节点和右节点的右节点,以及左节点的右节点和右节点的左节点要相等

所以按照这个思路去往下递归,并讨论好空节点的情况。递归的终点:找到不符合条件的情况或是两个结点相等且都为null,其余情况都继续向树的下层递归

 

代码实现及解析:

 1 public boolean isSymmetric(TreeNode root) {
 2           if (root == null) {
 3               return true;
 4           }
 5           return recur(root.left,root.right);
 6       }
 7       
 8       public boolean recur(TreeNode node1,TreeNode node2) {
 9           //处理掉空指针的情况
10           if (node1 == null && node2 == null) {//都为空则返回true(因为此时递归也正好要结束)
11               return true;
12           }
13           if ((node1 == null && node2 != null) || (node1 != null && node2 == null)) {//有为假的情况
14                                                                           //则直接返回false,结束递归
15               return false;
16           }
17           if (node1.val != node2.val) {
18               return false;
19           }
20           //一直往下递推,直到递归到双空指针以true结束,或是不满足对称的情况,以false结束
21           return recur(node1.left,node2.right) && recur(node1.right,node2.left);
22       }

 



这篇关于剑指 Offer 28. 对称的二叉树的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程