C语言 | Leetcode C语言题解之第101题对称二叉树

题目:

题解:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
bool isSymmetric(struct TreeNode* root) {

    if (root == NULL) return true;//如果根为空直接返回true
    
    struct TreeNode* p = root->left;
    struct TreeNode* q = root->right;//一个指向左子树,一个指向右子树

    struct TreeNode** stk1 = malloc(550 * sizeof(struct TreeNode));
    struct TreeNode** stk2 = malloc(550 * sizeof(struct TreeNode));//创建栈
    int top1 = 0, top2 = 0;//创建栈顶指针

    while ((p != NULL || q != NULL) || (top1 != 0 && top2 != 0)) {//栈不空或结点不全为空时循环

        if (p != NULL && q != NULL) {//两个结点都不空时

            if (p->val != q->val) return false;//结点值不同直接false
            
            stk1[top1++] = p;
            stk2[top2++] = q;//入栈
            p = p->left;
            q = q->right;//指针镜像移动
 
        }
        else if (p == NULL && q == NULL) {//两个结点都为空时

            p = stk1[--top1];
            q = stk2[--top2];//接收栈顶结点
            p = p->right;
            q = q->left;//指针镜像移动

        }
        else return false;//如果一个结点为空而另一个不为空时,直接false
        
    }

    return true;//经过以上处理后,此时栈已经空了,并且所有结点已经镜像遍历并比较过了,直接返回true

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/642365.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python函数、类和方法

大家好,当涉及到编写可维护、可扩展且易于测试的代码时,Python提供了一些强大的工具和概念,其中包括函数、类和方法。这些是Python编程中的核心要素,可以帮助我们构建高效的测试框架和可靠的测试用例。 本文将探讨Python中的函数、…

Nginx的集群负载均衡(nginx构建tomcat集群案例)

一 .Nginx的集群负载均衡 1.nginx 集群负载均衡示意图 2.四层负载均衡和7层负载均衡 LVS 四层负载均衡(常用); Haproxy四层负载均衡;Nginx 四层负载均衡; Haproxy七层负载均衡;Nginx 七层负载均衡(常用); 3.nginx构建tomcat集群 步骤1:安装tomcat 步骤2:nginx配置tom…

【QT八股文】系列之篇章3 | QT的多线程以及QThread与QObject

【QT八股文】系列之篇章3 | QT的多线程 前言4. 多线程为什么需要使用线程池线程池的基础知识python中创建线程池的方法使用threading库队列Queue来实现线程池使用threadpool模块,这是个python的第三方模块,支持python2和python3 QThread的定义QT多线程知…

JeeSite V5.7.1:前后端技术革新与性能优化

一、引言 随着技术的快速发展,企业对快速开发平台的需求日益增加。JeeSite作为一款基于Java的快速开发平台,凭借其强大的功能和灵活的配置,已经获得了广泛的应用。近期,JeeSite发布了V5.7.1版本,该版本在前后端技术上…

世界最高的自动化立体库之一:贯通6层楼

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 自动化立体库的建设步骤主要包括以下几个方面: 收集需求:首先,与使用者、管理者或业主进行沟通,了…

【启明智显技术分享】SOM2D02-2GW核心板适配ALSA(适用Sigmastar ssd201/202D)

提示:作为Espressif(乐鑫科技)大中华区合作伙伴及sigmastar(厦门星宸)VAD合作伙伴,我们不仅用心整理了你在开发过程中可能会遇到的问题以及快速上手的简明教程供开发小伙伴参考。同时也用心整理了乐鑫及星宸…

大语言模型实战——搭建纯本地迷你版RAG

1. 概念 RAG(Retrieval Augmented Generation)检索增强生成,它结合了搜索技术和大语言模型的提示词功能,以搜索算法找到的信息作为背景上下文,来辅助大语言模型(Large Language Model, LLM)生成…

【两数之和】python

目录 暴力法 set()集合法,看过即存 字典法dict(),看过即存 暴力法 笑死我了,这题两层循环居然没超时 class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:nlen(nums)for i in range…

解决Element组件el-switch在Vue中值的绑定与回显问题

概要 Switch 开关表示两种相互对立的状态间的切换,多用于触发「开/关」。可当一个布尔值进行使用。 问题描述与解决 引入Element组件的switch到Vue中,可以读取switch的值,但如果放在页面中,不能回显上去。 如上图,无论值是"否"还是“是”。都不能正确渲染到页…

Spring服务启动后就执行某个方法

下边按照执行顺序前后,测试代码结果截图放到最后: 1、注解PostConstruct 时间:当前bean被创建并且所有的依赖注入完成之后执行; 使用:当前bean 所在类内的某个方法上 添加该注解;该方法没有参数&#xf…

宝塔PHP环境安装配置Xdebug

宝塔PHP环境安装配置Xdebug 安装XdebugVSCode安装插件编辑配置文件编辑配置运行调试断点快捷键其他 安装Xdebug 在宝塔中,找到PHP,打开管理页面,选择xdebug扩展,点击操作栏中的安装按钮(这里已经安装过了,…

dolphinscheduler standalone安装

官方文档:https://dolphinscheduler.apache.org/en-us/docs/3.1.3/guide/installation/standalone 1.安装(以放在/home为例) 下载见:https://download.csdn.net/download/taotao_guiwang/89311365 tar -xvzf apache-dolphinsche…

【Linux系统编程】进程概念、进程排队、进程标识符、进程状态

目录 什么是进程? 浅谈进程排队 简述进程属性 进程属性之进程标识符 进程操作之进程创建 初识fork fork返回值 原理角度理解fork fork的应用 进程属性之进程状态 再谈进程排队 进程状态 运行状态 阻塞状态 挂起状态 Linux下的进程状态 “R”(运行状…

02.爬虫---HTTP基本原理

02.HTTP基本原理 1.URI 和 URL 的区别2.HTTP 和 HTTPS 的区别3.请求过程 1.URI 和 URL 的区别 URL(Uniform Resource Locator)即-统一资源定位符 URL是用来定位和访问互联网上资源的独特标识,它包括了资源的位置(如IP地址或域名&a…

让写书人勇敢穿越纸海的迷雾

坚守纸海:让写书人勇敢穿越纸海的迷雾 你作为一位写书人,在创作过程中你需要坚守初心是非常重要的。在创作的过程中,你会遇到各种挑战和困难,你要勇敢面对迷雾中的挑战,并通过不懈的努力和决心,成功地穿越…

Redis常见数据类型(6)-set, zset

目录 Set 命令小结 内部编码 使用场景 用户画像 其它 Zset有序集合 普通指令 zadd zcard zcount zrange zrevrange ​编辑 zrangebyscore zpopmax/zpopmin bzpopmax/bzpopmin zrank/zrevrank zscore zrem zremrangebyrank zremrangebyscore Set 命令小结 …

AI绘画基础,建议用天工 AI 搞副业,30 分钟搞定儿童早教内容

现在 AI 非常火,竞争也非常激烈,尤其是国内的 AI 大模型堪称百团大战,非常内卷。 我研究 AI 大模型也有快一年的时间了,也体验了国内的很多大模型,然后我感觉如果单从用户体验的角度来讲,综合产品力最强的…

FPGA状态机设计详解

一.什么是状态机? 想象一下你正在玩一个电子游戏,角色有多种状态,比如“行走”、“跳跃”、“攻击”等。每当你按下不同的按键或者满足某些条件时,角色的状态就会改变,并执行与该状态对应的动作。这就是状态机的一个简…

修改vuetify3的开关组件v-switch在inset模式下的大小

<v-switchv-model"model":label"Switch: ${model.toString()}"hide-detailsinset></v-switch><style lang"scss" scoped> .custom-switch {:deep(.v-switch__thumb) {height: 18px !important; /* 设置开关按钮的高度 */width…

html 引用vue3 element 首次加载缩成一团 挤在一起

问题&#xff1a;原生html引用vue,element plus 分析&#xff1a; vue.js, element脚本过大&#xff0c;首次加载网络慢的话&#xff0c;会是缩在这里&#xff0c;没完全渲染 解决&#xff1a; 没加载之前&#xff0c;不显示div&#xff0c;显示一个加载提示语 改动地方app…