Day15|leetcode层序遍历(10道题)、226.翻转二叉树、101.对称二叉树

这篇具有很好参考价值的文章主要介绍了Day15|leetcode层序遍历(10道题)、226.翻转二叉树、101.对称二叉树。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

整体思路:(二叉树层次遍历)

视频链接:讲透二叉树的层序遍历 | 广度优先搜索 | LeetCode:102.二叉树的层序遍历_哔哩哔哩_bilibili

看完视频可以一口气做十道题!(102、107、199、637、429、515、116、117、104、111)

二叉树的层序遍历如图所示:

Day15|leetcode层序遍历(10道题)、226.翻转二叉树、101.对称二叉树,leetcode,算法,数据结构,c++

leetcode 226.翻转二叉树

题目链接:226. 翻转二叉树 - 力扣(LeetCode)

视频链接:听说一位巨佬面Google被拒了,因为没写出翻转二叉树 | LeetCode:226.翻转二叉树_哔哩哔哩_bilibili

思路

翻转二叉树就是把节点的左右孩子交换一下,如图所示:

Day15|leetcode层序遍历(10道题)、226.翻转二叉树、101.对称二叉树,leetcode,算法,数据结构,c++

可以使用前序和后序,使用中序也可以,但是会有一点绕,因为中序是左中右,在翻转的时候,某节点的孩子会翻转两次,所以建议使用前序或后序。前序翻转过程如图所示:

Day15|leetcode层序遍历(10道题)、226.翻转二叉树、101.对称二叉树,leetcode,算法,数据结构,c++

代码实现(前序)

class Solution {
public:
        TreeNode* invertTree(TreeNode* root) {
            if(root == NULL) return root;
            swap(root->left,root->right);
            invertTree(root->left);
            invertTree(root->right);
            return root;
        }
};

leetcode 101.对称二叉树

题目链接:101. 对称二叉树 - 力扣(LeetCode)

视频链接:新学期要从学习二叉树开始! | LeetCode:101. 对称二叉树_哔哩哔哩_bilibili

思路

其实对称二叉树说白了就是看子树是否能翻转,就是比较左右子树里侧和外侧是否相等,如图所示:

Day15|leetcode层序遍历(10道题)、226.翻转二叉树、101.对称二叉树,leetcode,算法,数据结构,c++

 本题只能用后序,因为你要比的是左右子树的里外侧是否相等,所以要一个树遍历左右中,一个树遍历右左中。

比较外侧是否对称:传入的就是左节点的左孩子,右节点的右孩子。

比较内侧是否对称:传入的就是左节点的右孩子,右节点的左孩子。文章来源地址https://www.toymoban.com/news/detail-677841.html

代码实现(后序)

class Solution {
public:
    bool compare(TreeNode* left,TreeNode* right) {
        if(left == NULL && right != NULL) return false;
        else if(left != NULL && right == NULL) return false;
        else if(left == NULL && right == NULL) return true;
        else if(left->val != right->val) return false;
        bool outside = compare(left->left,right->right);
        bool inside = compare(left->right,right->left);
        bool isSame = outside && inside;
        return isSame;

    }
    bool isSymmetric(TreeNode* root) {
        if(root ==NULL) return true;
        return compare(root->left,root->right);
    }
};

到了这里,关于Day15|leetcode层序遍历(10道题)、226.翻转二叉树、101.对称二叉树的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 算法刷题Day 15 二叉树的层序遍历+翻转二叉树+对称二叉树

    层序遍历二叉树需要借助到队列 递归方法 迭代方法 就是简单的用上前序遍历迭代方法实现,不用想的太复杂 递归方法 迭代方法 这里使用了队列来存放两个要比较的结点。也可以使用栈,方法是类似的。

    2024年02月12日
    浏览(30)
  • LeetCode 0103.二叉树的锯齿形层序遍历:层序遍历 + 适时翻转

    力扣题目链接:https://leetcode.cn/problems/binary-tree-zigzag-level-order-traversal/ 给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。   示例 1: 示例 2: 示例 3:   提示: 树中节点数目在范

    2024年02月20日
    浏览(30)
  • 【leetcode100-038/039/040/041】【二叉树】翻转/对称/直径/层序遍历

    今天看题目真的太简单了,干脆一起写了。 【二叉树翻转】 给你一棵二叉树的根节点  root  ,翻转这棵二叉树,并返回其根节点。 思路: 先交换左右子节点,再递归处理左右子树(或者反过来也行)。 【镜像二叉树】 给你一个二叉树的根节点  root  , 检查它是否轴对称

    2024年01月19日
    浏览(50)
  • LeetCode 226. 翻转二叉树

    给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 示例 2: 输入:root = [2,1,3] 输出:[2,3,1] 示例 3: 输入:root = [] 输出:[] 提示: 方法一:递归 思路与算法 这是一道很经典的二叉树问题。显然,我们从根

    2024年04月13日
    浏览(26)
  • 二叉树OJ题:LeetCode--226.翻转二叉树

    朋友们、伙计们,我们又见面了,本期来给大家解读一下LeetCode中第226道二叉树OJ题,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! 数据结构与算法专栏: 数据结构与算法 个  人  主  页  : stackY、 C 语 言 专 栏 : C语言:从入门到精通 LeetCo

    2024年02月11日
    浏览(30)
  • LeetCode 热题 100 JavaScript --226. 翻转二叉树

    给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 3: 输入:root = [] 输出:[] 提示: 树中节点数目范围在 [0, 100] 内 -100 = Node.val = 100

    2024年02月14日
    浏览(31)
  • 【算法与数据结构】226、LeetCode翻转二叉树

    所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。    思路分析 :这道题的思路很简单,本质上就是遍历每一个节点,然后交换左右节点。我们可以用前中后遍历或者是层次遍历法来做,参考这两篇文章,【算法与数据结构】144、94、145LeetCode二

    2024年02月16日
    浏览(30)
  • 代码随想录day13 | 226.翻转二叉树 101.对称二叉树

    使用前、后序反转最为方便。 为啥不推荐中序? 中序遍历,某些节点的左右孩子会翻转两次,某些节点左右孩子不会被反转。 101.对称二叉树 关键在于,看这个节点对应的左子树和右子树是否可以相互反转。 1、如何比较呢? 比较的是两个子树的里侧和外侧的元素是否相等

    2024年02月15日
    浏览(29)
  • 【LeetCode】102. 二叉树的层序遍历、107. 二叉树的层序遍历 II

     作者:小卢 专栏:《Leetcode》 喜欢的话:世间因为少年的挺身而出,而更加瑰丽。                                  ——《人民日报》 102. 二叉树的层序遍历 给你二叉树的根节点  root  ,返回其节点值的  层序遍历  。 (即逐层地,从左到右访问所有节点)  示例:

    2024年02月13日
    浏览(31)
  • day-20 二叉树的层序遍历

    思路:利用队列进行广度优先遍历即可 注意点:ArrayList执行remove之后,索引i会立即重排,注意可能越界 code:

    2024年03月19日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包