首页 > 编程语言 >【LeetCode算法】第101题:对称二叉树

【LeetCode算法】第101题:对称二叉树

时间:2024-05-31 20:03:28浏览次数:15  
标签:return 右子 sym LeetCode 二叉树 101 root1 节点 root2

目录

一、题目描述

二、初次解答

三、官方解法

四、总结


一、题目描述

二、初次解答

1. 思路:递归判定左子树和右子树是否对称。用一个新函数sym来递归判定左子树和右子树是否对称。该函数细节:判定当前传入的两个根节点是否为空,若均为空则返回true,若只有其中一个为空则返回false,若两个根节点的值不同则返回false,否则递归判断根节点1的左子树与根节点2的右子树是否相同并判断根节点1的右子树与根节点2的左子树是否相同。

2. 代码:

bool sym(struct TreeNode* root1, struct TreeNode* root2){
    if(!root1 && !root2)
        return true;
    if(!root1 || !root2)
        return false;
    if(root1->val != root2->val)
        return false;
    return sym(root1->left, root2->right) && sym(root1->right, root2->left);
}

bool isSymmetric(struct TreeNode* root) {
    return sym(root->left, root->right);
}

3. 优点:仅遍历一遍,时间复杂度为O(n)。

4. 缺点:采用了递归,空间复杂度为O(n)。

三、官方解法

官方解法一与上述方法相同。官方解法二采用迭代方式但需要手动维护队列空间,时间复杂度与空间复杂度与解法一相同,但是代码量更大,因此此处不展开说明。

四、总结

判定二叉树左右子树是否对称,可以递归判定根节点的左子树和右子树是否对称。

标签:return,右子,sym,LeetCode,二叉树,101,root1,节点,root2
From: https://blog.csdn.net/weixin_46249470/article/details/139359947

相关文章

  • LeetCode-2890. 重塑数据:融合
    2890.重塑数据:融合DataFramereport+-------------+--------+|ColumnName|Type|+-------------+--------+|product|object||quarter_1|int||quarter_2|int||quarter_3|int||quarter_4|int|+-------------+--------+编写一个......
  • LeetCode-2891. 方法链
    2891.方法链DataFrameanimals+-------------+--------+|ColumnName|Type|+-------------+--------+|name|object||species|object||age|int||weight|int|+-------------+--------+编写一个解决方案来列出体重严格超过......
  • LeetCode-2887. 填充缺失值
    2887.填充缺失值DataFrameproducts+-------------+--------+|ColumnName|Type|+-------------+--------+|name|object||quantity|int||price|int|+-------------+--------+编写一个解决方案,在quantity列中将缺失的值填充为0。返回......
  • LeetCode-2888. 重塑数据:连结
    2888.重塑数据:连结DataFramedf1+-------------+--------+|ColumnName|Type|+-------------+--------+|student_id|int||name|object||age|int|+-------------+--------+DataFramedf2+-------------+--------+|ColumnName|Type......
  • LeetCode-2883. 删去丢失的数据
    2883.删去丢失的数据DataFramestudents+-------------+--------+|ColumnName|Type|+-------------+--------+|student_id|int||name|object||age|int|+-------------+--------+在name列里有一些具有缺失值的行。编写一个解决方案,删......
  • LeetCode-2884. 修改列
    2884.修改列DataFrameemployees+-------------+--------+|ColumnName|Type|+-------------+--------+|name|object||salary|int|+-------------+--------+一家公司决定增加员工的薪水。编写一个解决方案,将每个员工的薪水乘以2来修改salary列......
  • LeetCode-2885. 重命名列
    2885.重命名列DataFramestudents+-------------+--------+|ColumnName|Type|+-------------+--------+|id|int||first|object||last|object||age|int|+-------------+--------+编写一个解决方案,按以下方式重命名列......
  • LeetCode-2886. 改变数据类型
    2886.改变数据类型DataFramestudents+-------------+--------+|ColumnName|Type|+-------------+--------+|student_id|int||name|object||age|int||grade|float|+-------------+--------+编写一个解决方案来纠正以下错误......
  • Leetcode-2028. 找出缺失的观测数据
    2028.找出缺失的观测数据现有一份n+m次投掷单个六面骰子的观测数据,骰子的每个面从1到6编号。观测数据中缺失了n份,你手上只拿到剩余m次投掷的数据。幸好你有之前计算过的这n+m次投掷数据的平均值。给你一个长度为m的整数数组rolls,其中rolls[i]是第i......
  • Leetcode-2828. 判别首字母缩略词
    2828.判别首字母缩略词给你一个字符串数组words和一个字符串s,请你判断s是不是words的首字母缩略词。如果可以按顺序串联words中每个字符串的第一个字符形成字符串s,则认为s是words的首字母缩略词。例如,"ab"可以由["apple","banana"]形成,但是无法从["bear"......