首页 > 其他分享 >LeetCode 101. 对称二叉树

LeetCode 101. 对称二叉树

时间:2023-05-15 20:01:33浏览次数:52  
标签:right nil queue Right 二叉树 101 root LeetCode left

题目链接:LeetCode 101. 对称二叉树

题意:

给你一个二叉树的根节点 root , 检查它是否轴对称。

解题思路:

1. 递归法

采用递归法思路就比较简单,因为要比较二叉树是否是轴对称的,因此就是比较左右子树是否轴对称,
因此在遍历的过程中,就是比较左边的左子树 与 右边的右子树是否相等,以及 左边的右子树 与 右边的左子树是否相等。

递归代码如下

func isSymmetric(root *TreeNode) bool {
    return dfs(root.Left, root.Right)
}
func dfs(left , right *TreeNode) bool {
    if left == nil && right == nil {
        return true
    }
    if left == nil || right == nil || left.Val != right.Val{
        return false
    }
    return dfs(left.Left, right.Right) && dfs(right.Left, left.Right);
}

2. 迭代法

迭代代码如下:

func isSymmetric(root *TreeNode) bool {
    var queue []*TreeNode;
    if root != nil {
        queue = append(queue, root.Left, root.Right);
    }
    for len(queue) > 0 {
        left := queue[0];
        right := queue[1];
        queue = queue[2:];
        if left == nil && right == nil {
            continue;
        }
        if left == nil || right == nil || left.Val != right.Val {
            return false;
        };
        queue = append(queue, left.Left, right.Right, right.Left, left.Right);
    }
    return true;
}

标签:right,nil,queue,Right,二叉树,101,root,LeetCode,left
From: https://www.cnblogs.com/lxing-go/p/17402885.html

相关文章

  • LeetCode 周赛 345(2023/05/14)体验一题多解的算法之美
    本文已收录到AndroidFamily,技术和职场问题,请关注公众号[彭旭锐]提问。往期回顾:LeetCode双周赛第104场·流水的动态规划,铁打的结构化思考周赛概览T1.找出转圈游戏输家(Easy)标签:模拟、计数T2.相邻值的按位异或(Medium)标签:模拟、数学、构造T3.矩阵中移动的最......
  • LeetCode 226. 翻转二叉树
    题目链接:LeetCode226.翻转二叉树题意:给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点。解题思路:对于每一个节点,只需要考虑反转当前节点的左右子树即可,因此只需要考虑遍历顺序,本题中,采用前序和后序遍历都是可以的,但是中序遍历不行,如果采用中序,会将某些节点反转两......
  • LeetCode 94. 二叉树的中序遍历
    题目链接:LeetCode94.二叉树的中序遍历题意:给定一个二叉树的根节点root,返回它的中序遍历。解题思路:对于二叉树的遍历,有递归和非递归两种遍历方式,1.递归遍历**根据“左->根->右”的顺序,直接模拟即可。注意按照递归三部曲(递归的参数和返回值、递归的终止条件、单层......
  • 二刷Leetcode-Days02
    栈和队列:/***232.用栈实现队列*队列的先进先出可以使用两个栈stackIn和stackOut来实现;*出队列前,如果stackOut不为空,表示队列当前值在上一轮已进入stackOut中,还没有被消费掉*若stackOut为空,也就是队列当前值还在stackIn中,为了确保先进先......
  • 2023-05-15 leetcode周赛题
    找出转圈游戏输家mysolution100%passclassSolution:defcircularGameLosers(self,n:int,k:int)->List[int]:seen=set()now_num=1step=1seen.add(1)while1:stepSum=step*ktotal=now_num+stepSumnow_num=tot......
  • ABB工业中央控制器PCD244A101
    W;①⑧0③0①7775⑨ABB工业中央控制器PCD244A1013BHE042816R0101/ZUBA003203R0001/PEC80-SCC  REV.B,PCD231B3HHE025541R0101PCD231B1013BHE025541R0101PCD231B1013BHE025541R0101PCD232A3BHE022293R0101PCD235B11013BHE032025R1101PCD232A1013BHE022293......
  • 第五章 5.3.6找出二叉树中的前驱和后继结点
    中序线索二叉树找中序后继中序线索二叉树找中序前驱先序线索二叉树找先序后继先序线索二叉树找找先序前驱无法直接找到先序前驱,需要引入父节点指针(三叉链表),后序线索二叉树找后序前驱后序线索二叉树找后序后继找不到后序后继,需要通过三叉链表总结......
  • 【LeetCode字符串#extra】KMP巩固练习:旋转字符串、字符串轮转
    旋转字符串https://leetcode.cn/problems/rotate-string/给定两个字符串,s和goal。如果在若干次旋转操作之后,s能变成goal,那么返回true。s的旋转操作就是将s最左边的字符移动到最右边。例如,若s='abcde',在旋转一次之后结果就是'bcdea'。示例1:输入:s="......
  • leetcode1004
    1.二分查找法用一数组P【i】记录每个位置之前到自己本身位置i有多少个0,只要满足【下界,上界】之间的0个数小于等于k就可以连接成为连续的1。即P【上界】-P【下界】<=k因为第一个位置要是为0要做特殊处理[上界,下界]之间0的个数不能简单用P[上界]-P【下界】,记有n个元素,从P[0]~P......
  • LeetCode 347. 前 K 个高频元素
    题目链接:LeetCode347.前K个高频元素题意:给你一个整数数组nums和一个整数k,请你返回其中出现频率前k高的元素。你可以按任意顺序返回答案。解题思路:(哈希表,计数排序)O(n)首先用哈希表统计出所有数出现的次数。由于所有数出现的次数都在1到n之间,所以我们可以......