【初阶数据结构与算法】二叉树链式结构刷题训练(Leetcode二叉树遍历、单值二叉树、相同的树、另一棵树的子树、对称二叉树)

【初阶数据结构与算法】二叉树链式结构刷题训练(Leetcode二叉树遍历、单值二叉树、相同的树、另一棵树的子树、对称二叉树)
在这里插入图片描述


文章目录

一、二叉树的遍历

在链式二叉树的定义与实现中我们已经详细讲解了二叉树常见的三种遍历方式,以及层序遍历,这里给出链接:【初阶数据结构与算法】二叉树链式结构的定义与实现万字笔记(附源码)
放在这里是希望大家可以通过题目链接去练习一下,看看自己能不能写出来,写不出来再去上文复习复习,链接如下:
前序遍历:https://leetcode.cn/problems/binary-tree-preorder-traversal/description/
中序遍历:https://leetcode.cn/problems/binary-tree-inorder-traversal/description/
后序遍历:https://leetcode.cn/problems/binary-tree-postorder-traversal/description/

二、单值二叉树

题目链接:https://leetcode.cn/problems/univalued-binary-tree/description/

我们先来看看题目描述以及相关示例:

在这里插入图片描述


这道题要求我们查看一颗二叉树里面所有节点存放的值是否相同,比较简单,相当于考察我们的链式二叉树中递归的学习,以及对遍历的理解,可以自己先尝试着做一做,然后再来看后面的解析和答案
首先我们来说解析,这个题我们还是需要使用递归的思想,就是“以大化小”,将大的问题转化为一个又一个的子问题,按照这种思路我们来重新解释一下这道题:
首先看根节点和左右子树根节点是否相同,如果相同就看左右子树是否同时为单值二叉树,我们就将这个大问题转化为了根节点和左右子树根节点的比较,以及左右是否为单值二叉树这样的小问题
或者说这样理解也可以,就是这道题需要我们遍历整颗二叉树,在我们遍历整颗二叉树时,每遍历一个节点就判断一下当前节点和它的左右孩子是否相等,当然,在这之前我们需要判断左右孩子是否存在
相当于就是根节点和它的左右孩子的值作比较,然后根节点的左右孩子也有自己的左右孩子,让它们的左右孩子继续和自己的左右孩子进行比较,这样就相当于在递归,跟我们的遍历很相似
但是最后我们发现这两个思路是高度重合的,甚至可以说就是一个思想说了两遍,但是不管怎样,我们对单值二叉树有了更深的了解,接下来来说说具体做法
首先我们需要判断根节点是否为空,如果为空就返回true,如果不为空的话,先判断左右孩子是否为空,跟不为空的孩子做比较,如果发现某个孩子的值和根节点不同,就返回false
如果和左右孩子比较后发现相同就去递归左右孩子,将整颗子树是否是单值二叉树问题转化为左子树和右子树是否同时为单值二叉树这样的递归思想,那么有了思路我们就来写代码,如下:

bool isUnivalTree(structTreeNode* root){ //首先判断根节点是否为空,为空返回trueif(root ==NULL){ return true;}//如果左孩子不为空,看看左孩子和根节点是否相同,不同就返回假if(root->left && root->left->val != root->val){ return false;}//如果右孩子不为空,看看右孩子和根节点是否相同,不相同就返回假if(root->right && root->right->val != root->val){ return false;}//递归左右子树 bool left =isUnivalTree(root->left); bool right =isUnivalTree(root->right);//只有左右子树都为单值二叉树才返回truereturn left &&

Read more

告别“打字机”:Generative UI 如何重塑 AI 时代的前端交互?

告别“打字机”:Generative UI 如何重塑 AI 时代的前端交互?

自从大语言模型(LLM)爆发以来,前端开发者接到了无数“给系统加个 AI 对话框”的需求。我们熟练地接入 API,处理流式(Streaming)响应,看着文字像打字机一样一个个蹦出来。 但这真的是 AI 时代前端交互的终点吗? 想象一下这个场景:用户问“帮我对比一下苹果和微软的近期股价”。传统的聊天机器人只能吐出一堆干瘪的文字,或者勉强渲染一个 Markdown 表格。但作为一名前端工程师,你的组件库里明明躺着精美的 Echarts K线图、带有交互提示的卡片和丝滑的动画。 为什么我们不能让大模型直接“生成”一个可交互的 React 或 Vue 组件呢?答案是:可以。这就是目前前端领域最具颠覆性的范式——Generative UI(生成式 UI)。 什么是 Generative UI? Generative UI 是指结合 AI

By Ne0inhk
安利一款超实用的前端可视化打印设计器:Vue Print Designer

安利一款超实用的前端可视化打印设计器:Vue Print Designer

做前端开发的朋友应该都懂,业务开发中遇到打印需求真的头大 —— 手写分页逻辑繁琐、不同框架适配麻烦、票据 / 快递单这类定制化打印场景不好实现,找个趁手的打印插件更是难上加难。最近发现了一款开源的可视化打印设计器Vue Print Designer,完美解决了这些痛点,不管是快速开发还是企业级定制化需求都能满足,今天就跟大家详细聊聊这款工具。 一、Vue Print Designer 是什么? Vue Print Designer 是一款面向业务表单、标签、票据、快递单等打印场景的可视化设计器,核心主打模板化、变量化设计,还提供了静默打印、云打印能力,同时支持 PDF / 图片 / Blob 等多种导出方式,完全能覆盖日常开发中的各类打印需求。 它不是简单的打印插件,而是一套完整的打印解决方案,从可视化设计模板,到参数配置、多端打印,再到定制化扩展,一站式搞定,而且项目还在持续更新,最新版本已经支持英寸、厘米作为单位,对国际化和精细化设计更友好了。 项目地址:https://gitee.com/

By Ne0inhk
【前端】win11操作系统安装完最新版本的NodeJs运行npm install报错,提示在此系统上禁止运行脚本

【前端】win11操作系统安装完最新版本的NodeJs运行npm install报错,提示在此系统上禁止运行脚本

🌹欢迎来到《小5讲堂》🌹 🌹这是《前端》系列文章,每篇文章将以博主理解的角度展开讲解。🌹 🌹温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!🌹 目录 * 前言 * 解决方案 * 方法1:以管理员身份运行 PowerShell 并更改执行策略 * 方法2:只为当前会话临时允许 * 方法3:使用命令提示符 (CMD) * 方法4:绕过策略执行单个脚本 * 推荐解决方案 * Node.js 详细介绍 * 什么是 Node.js? * 核心特点 * 1. **非阻塞 I/O 和事件驱动** * 2. **单线程但高并发** * 架构组成 * 1. **V8 JavaScript 引擎** * 2. **LibUV 库** * 3. **核心模块** * 安装与使用

By Ne0inhk