力扣101_对称二叉树Symmetric_Tree
发布日期:2021-05-08 11:10:43 浏览次数:20 分类:精选文章

本文共 1113 字,大约阅读时间需要 3 分钟。

递归

class Solution {   public:    bool isSymmetric(TreeNode* root) {           return check(root, root);    }    bool check(TreeNode* tree1, TreeNode* tree2)    {           if(!tree1 && !tree2) return true;        if(!tree1 || !tree2) return false;        return tree1->val == tree2->val && check(tree1->left, tree2->right) && check(tree1->right, tree2->left);    }};

在这里插入图片描述

迭代

和之前对二叉树的处理类似,可以通过队列的方式处理递归的过程。在首次创建队列时将root入队2次即可,每次提取两个结点并比较它们的值(队列中每两个连续的结点应该是相等的,而且它们的子树互为镜像),然后将两个结点的左右子结点按相反的顺序插入队列中。当队列为空时,或者我们检测到树不对称(即从队列中取出两个不相等的连续结点)时,该算法结束。

class Solution{   public:    bool isSymmetric(TreeNode* root){   //使用迭代的方法        return check(root, root);    }    bool check(TreeNode* t1, TreeNode* t2)    {           queue
q; q.push(t1); q.push(t2); while(!q.empty()){ auto l = q.front(); q.pop(); auto r = q.front(); q.pop(); if(!l && !r) continue; if(!l|| !r ||(l->val != r->val)) return false; q.push(l->left); q.push(r->right); q.push(l->right); q.push(r->left); } return true; }};

在这里插入图片描述

上一篇:Leetcode112_Path Sum(思路纠正+书写习惯)
下一篇:Leetcode 102题.Binary Tree Level Order Traversal

发表评论

最新留言

表示我来过!
[***.240.166.169]2025年03月26日 20时16分44秒