{
    "version": "https://jsonfeed.org/version/1",
    "title": "Hexo",
    "description": "凯迪大王的blog",
    "home_page_url": "https://www.depresskid.top",
    "items": [
        {
            "id": "https://www.depresskid.top/2026/05/31/hello-world/",
            "url": "https://www.depresskid.top/2026/05/31/hello-world/",
            "title": "Hello World",
            "date_published": "2026-05-31T12:57:48.774Z",
            "content_html": "<p>Welcome to <a href=\"https://hexo.io/\">Hexo</a>! This is your very first post. Check <a href=\"https://hexo.io/docs/\">documentation</a> for more info. If you get any problems when using Hexo, you can find the answer in <a href=\"https://hexo.io/docs/troubleshooting.html\">troubleshooting</a> or you can ask me on <a href=\"https://github.com/hexojs/hexo/issues\">GitHub</a>.</p>\n<h2 id=\"quick-start\"><a class=\"anchor\" href=\"#quick-start\">#</a> Quick Start</h2>\n<h3 id=\"create-a-new-post\"><a class=\"anchor\" href=\"#create-a-new-post\">#</a> Create a new post</h3>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-bash\"><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">$</span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> hexo</span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> new</span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"</span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">My New Post</span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"</span></span></code></pre>\n<p>More info: <a href=\"https://hexo.io/docs/writing.html\">Writing</a></p>\n<h3 id=\"run-server\"><a class=\"anchor\" href=\"#run-server\">#</a> Run server</h3>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-bash\"><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">$</span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> hexo</span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> server</span></span></code></pre>\n<p>More info: <a href=\"https://hexo.io/docs/server.html\">Server</a></p>\n<h3 id=\"generate-static-files\"><a class=\"anchor\" href=\"#generate-static-files\">#</a> Generate static files</h3>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-bash\"><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">$</span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> hexo</span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> generate</span></span></code></pre>\n<p>More info: <a href=\"https://hexo.io/docs/generating.html\">Generating</a></p>\n<h3 id=\"deploy-to-remote-sites\"><a class=\"anchor\" href=\"#deploy-to-remote-sites\">#</a> Deploy to remote sites</h3>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-bash\"><span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">$</span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> hexo</span><span style=\"color:#B56959;--shiki-dark:#C98A7D\"> deploy</span></span></code></pre>\n<p>More info: <a href=\"https://hexo.io/docs/one-command-deployment.html\">Deployment</a></p>\n",
            "tags": []
        },
        {
            "id": "https://www.depresskid.top/2026/05/31/%E7%BD%91%E6%98%93%E4%BA%91%E9%9F%B3%E6%BA%90%E6%9C%8D%E5%8A%A1%E9%85%8D%E7%BD%AE/",
            "url": "https://www.depresskid.top/2026/05/31/%E7%BD%91%E6%98%93%E4%BA%91%E9%9F%B3%E6%BA%90%E6%9C%8D%E5%8A%A1%E9%85%8D%E7%BD%AE/",
            "title": "网易云音源解析配置教程",
            "date_published": "2026-05-31T12:00:00.000Z",
            "content_html": "<p>配置好的网易云api接口地址:</p>\n<ul>\n<li><a href=\"https://www.2006111.xyz\">https://www.2006111.xyz</a> (vercel)</li>\n</ul>\n<p>音源解析地址:</p>\n<ul>\n<li><a href=\"https://unm-server.focalors.ltd\">https://unm-server.focalors.ltd</a></li>\n</ul>\n<h2 id=\"介绍\"><a class=\"anchor\" href=\"#介绍\">#</a> 介绍</h2>\n<p>用于实现对网易云api服务与音源解析的配置</p>\n<blockquote>\n<p>通过api服务能够使用第三方客户端, 音源解析来实现对灰色/vip歌曲的播放</p>\n</blockquote>\n<p>需要两个服务来提供api接口</p>\n<ol>\n<li>UnblockNeteaseMusic-utils</li>\n<li>NeteaseCloudMusicApiEnhanced/api-enhanced</li>\n</ol>\n<p><strong>最终会获取服务的域名,通过这个域名即可访问api服务</strong></p>\n<p>eg. <a href=\"http://xn--UbuntuIP-im2mh3odzdt5pvq8coi6b4u1a:5050/match?id=1407551413\">http://你的Ubuntu服务器公网IP:5050/match?id=1407551413</a></p>\n<p>即可搜索id为1407551413的音乐,会返回解析的地址</p>\n<h2 id=\"通过服务器配置\"><a class=\"anchor\" href=\"#通过服务器配置\">#</a> 通过服务器配置</h2>\n<p>###配置unblock</p>\n<p><a href=\"https://github.com/NeteaseCloudMusicApiEnhanced/UnblockNeteaseMusic-utils\">UnblockNeteaseMusic-utils api</a></p>\n<p><a href=\"https://unm-server.focalors.ltd/\">UnblockNeteaseMusic Utils</a></p>\n<p>居然有现成的api???!</p>\n<p>直接部署的核心其实就是三大步：<strong>装环境 ➔ 下源码 ➔ 挂后台</strong>。下面是详细的裸机（Bare Metal）配置指南：</p>\n<h4 id=\"第一步配置-nodejs-运行环境\"><a class=\"anchor\" href=\"#第一步配置-nodejs-运行环境\">#</a> 第一步：配置 Node.js 运行环境</h4>\n<p><code>UnblockNeteaseMusic-utils</code> 需要较新版本的 Node.js。我们建议安装 <strong>Node.js 18 或 20</strong>。</p>\n<ol>\n<li>\n<p><strong>更新系统的 apt 包列表</strong>：</p>\n<p>Bash</p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-text\"><span class=\"line\"><span>sudo apt update</span></span></code></pre>\n</li>\n<li>\n<p><strong>通过官方 NodeSource 脚本安装 Node.js（推荐，版本更稳）</strong>：</p>\n<p>Bash</p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-text\"><span class=\"line\"><span>curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -</span></span>\n<span class=\"line\"><span>sudo apt install -y nodejs</span></span></code></pre>\n</li>\n<li>\n<p><strong>验证安装是否成功</strong>（如果打印出版本号，代表成功）：</p>\n<p>Bash</p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-text\"><span class=\"line\"><span>node -v</span></span>\n<span class=\"line\"><span>npm -v</span></span></code></pre>\n</li>\n<li>\n<p><strong>安装该项目推荐的 <code>pnpm</code> 包管理工具</strong>：</p>\n<p>Bash</p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-text\"><span class=\"line\"><span>sudo npm install -g pnpm</span></span></code></pre>\n</li>\n</ol>\n<h4 id=\"第二步拉取源码并安装依赖\"><a class=\"anchor\" href=\"#第二步拉取源码并安装依赖\">#</a> 第二步：拉取源码并安装依赖</h4>\n<ol>\n<li>\n<p><strong>把项目克隆到你喜欢的目录下（例如用户根目录下的 <code>unm-api</code>）</strong>：</p>\n<p>Bash</p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-text\"><span class=\"line\"><span>cd ~</span></span>\n<span class=\"line\"><span>git clone https://github.com/NeteaseCloudMusicApiEnhanced/UnblockNeteaseMusic-utils.git unm-api</span></span>\n<span class=\"line\"><span>cd unm-api</span></span></code></pre>\n</li>\n<li>\n<p><strong>使用 pnpm 安装项目依赖</strong>：</p>\n<p>Bash</p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-text\"><span class=\"line\"><span>pnpm install</span></span></code></pre>\n</li>\n</ol>\n<h4 id=\"第三步使用-pm2-让服务常驻后台\"><a class=\"anchor\" href=\"#第三步使用-pm2-让服务常驻后台\">#</a> 第三步：使用 PM2 让服务常驻后台</h4>\n<p>如果你此时在终端直接运行 <code>npm start</code>，服务确实能启动，但<strong>当你关闭 SSH 窗口时，服务就会跟着断掉</strong>。 所以我们需要用 Node.js 社区最常用的进程管理器 <strong>PM2</strong>，让它在 Ubuntu 后端作为守护进程静默运行。</p>\n<ol>\n<li>\n<p><strong>全局安装 PM2</strong>：</p>\n<p>Bash</p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-text\"><span class=\"line\"><span>sudo npm install -g pm2</span></span></code></pre>\n</li>\n<li>\n<p><strong>指定端口并利用 PM2 启动服务</strong>： 该项目默认运行在 <code>3000</code> 端口。如果你想把它改成 <code>5050</code>（或者任何你想给安卓 App 访问的端口），可以通过传入 <code>PORT</code> 环境变量来直接启动：</p>\n<p>Bash</p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-text\"><span class=\"line\"><span>PORT=3000 pm2 start app.js --name \"unm-rest-api\"</span></span></code></pre>\n<p><em>(注：如果项目根目录没有 app.js，可以查看 package.json，若入口是 index.js，则将上述命令中的 <code>app.js</code> 改为 <code>index.js</code>。或者直接用 <code>PORT=5050 pm2 start npm --name &quot;unm-rest-api&quot; -- start</code>)</em></p>\n</li>\n<li>\n<p><strong>设置开机自启（防止服务器重启后服务挂掉）</strong>：</p>\n<p>Bash</p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-text\"><span class=\"line\"><span>pm2 save</span></span>\n<span class=\"line\"><span>pm2 startup</span></span></code></pre>\n<p><em>(注：运行 <code>pm2 startup</code> 后，终端会打印出一行类似 <code>sudo env PATH=...</code> 的命令，<strong>复制并执行它</strong>，即可完美锁死开机自启)</em></p>\n</li>\n</ol>\n<p>####管理和测试你的服务</p>\n<p>现在服务已经在后台轻量运行了，你可以随时通过以下命令控制它：</p>\n<ul>\n<li><strong>查看运行状态</strong>：<code>pm2 list</code></li>\n<li><strong>查看实时日志</strong>：<code>pm2 logs unm-rest-api</code></li>\n<li><strong>重启服务</strong>：<code>pm2 restart unm-rest-api</code></li>\n<li><strong>停止服务</strong>：<code>pm2 stop unm-rest-api</code></li>\n</ul>\n<p>####别忘了防火墙：</p>\n<p>如果是在本地测试，请记得放行你设置的端口（例如 <code>5050</code>）：</p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-text\"><span class=\"line\"><span>sudo ufw allow 5050/tcp</span></span></code></pre>\n<p><em>(如果是阿里云/腾讯云，依然需要去云控制台的安全组里放行该端口。)</em></p>\n<p><strong>控制台/对应的服务器/防火墙/添加规则</strong></p>\n<blockquote>\n<p>tcp协议放行3000端口</p>\n</blockquote>\n<p>####怎么验证服务是否能用？</p>\n<p>服务成功 online 后，你可以在外网（比如你的电脑浏览器或 Postman）访问下面这个链接，测试它是否能正常解析（记得把公网IP换成你自己的）：</p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-text\"><span class=\"line\"><span>http://你的Ubuntu服务器公网IP:5050/match?id=1407551413</span></span></code></pre>\n<p>###配置enhance_api</p>\n<p><a href=\"https://github.com/NeteaseCloudMusicApiEnhanced/api-enhanced\">NeteaseCloudMusicApiEnhanced/api-enhanced</a></p>\n<h4 id=\"第一步拉取源码与安装\"><a class=\"anchor\" href=\"#第一步拉取源码与安装\">#</a> 第一步：拉取源码与安装</h4>\n<ol>\n<li>\n<p><strong>进入你的用户根目录，克隆核心业务 API 项目</strong>：</p>\n<p>Bash</p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-text\"><span class=\"line\"><span>cd ~</span></span>\n<span class=\"line\"><span>git clone https://github.com/NeteaseCloudMusicApiEnhanced/NeteaseCloudMusicApiEnhanced.git netease-api</span></span>\n<span class=\"line\"><span>cd netease-api</span></span></code></pre>\n</li>\n<li>\n<p><strong>使用 pnpm 安装依赖</strong>：</p>\n<p>Bash</p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-text\"><span class=\"line\"><span>pnpm install</span></span></code></pre>\n</li>\n</ol>\n<h4 id=\"第二步核心配置创建-env-文件\"><a class=\"anchor\" href=\"#第二步核心配置创建-env-文件\">#</a> 第二步：核心配置（创建 <code>.env</code> 文件）</h4>\n<p>该项目支持通过根目录下的 <code>.env</code> 文件来读取配置。对于自研 App 开发，强烈建议创建此文件进行定制。</p>\n<p>在 <code>~/netease-api</code> 目录下创建并编辑 <code>.env</code> 文件：</p>\n<p>Bash</p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-text\"><span class=\"line\"><span>nano .env</span></span></code></pre>\n<p>将以下开发常用配置粘贴进去（根据你的实际情况修改）：</p>\n<p>代码段</p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-text\"><span class=\"line\"><span># 1. 服务运行的端口(我改成了4000)</span></span>\n<span class=\"line\"><span>PORT=4000</span></span>\n<span class=\"line\"><span></span></span>\n<span class=\"line\"><span># 2. 严格指定运行主机（0.0.0.0 代表允许外网通过服务器公网 IP 访问）</span></span>\n<span class=\"line\"><span>HOST=0.0.0.0</span></span>\n<span class=\"line\"><span></span></span>\n<span class=\"line\"><span># 3. 开启匿名登录（方便 App 在用户未登录时浏览首页、歌单等公共数据）</span></span>\n<span class=\"line\"><span>ALLOW_ANONYMOUS_LOGIN=true</span></span>\n<span class=\"line\"><span></span></span>\n<span class=\"line\"><span># 4. 境外 IP 欺骗（极其重要！🌟）</span></span>\n<span class=\"line\"><span># 如果你的 Ubuntu 服务器是腾讯云香港、香港 AWS、海外 VPS 等，网易云会限制海外 IP 访问。</span></span>\n<span class=\"line\"><span># 解开下方这行的注释，填入一个合法的中国大陆 IP（例如上海电信/腾讯云国内节点的某个 IP），接口会自动伪装成国内请求。</span></span>\n<span class=\"line\"><span># X_REAL_IP=116.228.89.233</span></span></code></pre>\n<p><em>注：编辑完成后，按 <code>Ctrl + O</code> 保存，再按 <code>Ctrl + X</code> 退出。</em></p>\n<p>####第三步：使用 PM2 启动与守护</p>\n<p>配置好 <code>.env</code> 后，不需要在命令行里手动传参了，PM2 会自动读取同目录下的 <code>.env</code> 配置。</p>\n<ol>\n<li>\n<p><strong>直接启动服务</strong>：</p>\n<p>Bash</p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-text\"><span class=\"line\"><span>pm2 start app.js --name \"netease-core-api\"</span></span></code></pre>\n<p><em>(注：如果项目根目录下没有 <code>app.js</code> 而是 <code>index.js</code>，请将命令改为 <code>pm2 start index.js --name &quot;netease-core-api&quot;</code>)</em></p>\n</li>\n<li>\n<p><strong>检查运行状态</strong>：</p>\n<p>Bash</p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-text\"><span class=\"line\"><span>pm2 list</span></span></code></pre>\n<p>你现在应该能同时看到 <code>unm-api</code> (5050端口) 和 <code>netease-core-api</code> (3000端口) 两个服务都在绿色的 <code>online</code> 状态下并存运行。</p>\n</li>\n<li>\n<p><strong>保存并锁定开机自启</strong>：</p>\n<p>Bash</p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-text\"><span class=\"line\"><span>pm2 save</span></span></code></pre>\n</li>\n<li>\n<p><strong>防火墙放行 4000 端口</strong>：</p>\n<p>Bash</p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-text\"><span class=\"line\"><span>sudo ufw allow 4000/tcp</span></span></code></pre>\n<p><em>(同样，如果是腾讯云/阿里云等服务器，记得去云控制台的安全组里把 <strong>TCP 4000</strong> 端口也放行。)</em></p>\n</li>\n</ol>\n<h4 id=\"第四步验证接口是否正常运作\"><a class=\"anchor\" href=\"#第四步验证接口是否正常运作\">#</a> 第四步：验证接口是否正常运作</h4>\n<p>访问：<code>http://你的服务器公网IP:4000/search?keywords=海阔天空</code></p>\n<blockquote>\n<p><strong>预期</strong>：应该返回包含 Beyond《海阔天空》详细歌曲信息的庞大 JSON 数据。</p>\n</blockquote>\n<ol start=\"2\">\n<li>测试二维码登录流程（安卓 App 开发必用）</li>\n</ol>\n<p>访问：<code>http://你的服务器公网IP:4000/login/qr/key</code></p>\n<blockquote>\n<p><strong>预期</strong>：返回一个 <code>unikey</code>。你的安卓 App 拿到这个 key 后，再去请求 <code>/login/qr/create?key=拿到的key</code> 就能生成二维码供用户扫码登录了。</p>\n</blockquote>\n<h2 id=\"进阶vercel\"><a class=\"anchor\" href=\"#进阶vercel\">#</a> 进阶(vercel)</h2>\n<p>有了上面的操作,我们就可以通过 IP:端口号 来访问服务api接口.</p>\n<p>但是服务器也要钱,于是就有了另一种方案 <strong>使用vercel提供的免费部署方案</strong></p>\n<p>v4.0.8 加入了 Vercel 配置文件,可以直接在 Vercel 下部署了,不需要自己的服务器(访问 Vercel 部署的接口,需要额外加一个 realIP 参数,如 <code>/song/url?id=1969519579&amp;realIP=116.25.146.177</code>)</p>\n<p>v4.29.9 加入了生成随机中国 IP 功能, 在请求时加上 <code>randomCNIP=true</code> 即可使用随机中国 IP, 如 <code>/song/url?id=1969519579&amp;randomCNIP=true</code></p>\n<p>不能正常访问的,绑定下国内备案过的域名,之后即可正常访问</p>\n<h3 id=\"操作方法\"><a class=\"anchor\" href=\"#操作方法\">#</a> 操作方法</h3>\n<ol>\n<li><a href=\"https://github.com/neteasecloudmusicapienhanced/api-enhanced/fork\">fork</a> 此项目</li>\n<li>在 Vercel 官网点击 <code>New Project</code></li>\n<li>点击 <code>Import Git Repository</code> 并选择你 fork 的此项目并点击<code>import</code></li>\n<li>点击 <code>PERSONAL ACCOUNT</code> 的 <code>select</code></li>\n<li>直接点<code>Continue</code></li>\n<li><code>PROJECT NAME</code>自己填,<code>FRAMEWORK PRESET</code> 选 <code>Other</code> 然后直接点 <code>Deploy</code> 接着等部署完成即可</li>\n</ol>\n<p>###加速访问</p>\n<p>在vercel上部署完项目后,点击进入项目就能 看到对应的base url,这个就是api接口地址,同理</p>\n<p>eg. <a href=\"http://xn--ciqv3tnb7437a/match?id=1407551413\">http://这个地址/match?id=1407551413</a></p>\n<p>即可搜索id为1407551413的音乐,会返回解析的地址</p>\n<p>但是,由于服务器在国外.访问速度会比较慢.且dns可能被污染</p>\n<p>因此,可以通过cloudflare提供的dns优选功能来提高访问速度,<strong>首先要去买一个域名</strong></p>\n<p><strong>参考</strong> <a href=\"https://www.bilibili.com/video/BV1SM4m1176E/\">白嫖Cloudflare最优CDN给自己网站加速，尽情享受CF的免费服务_哔哩哔哩_bilibili</a></p>\n<p>然后这个域名就交给cloudflare来解析了,接下来就是到vercel添加这个域名</p>\n<p><img loading=\"lazy\" src=\"/assets/image-20260527174541797.png\" alt=\"image-20260527174541797\" /></p>\n<p>添加就好了</p>\n<p><strong>两个服务都可以通过这样的方式实现加速访问</strong></p>\n",
            "tags": []
        },
        {
            "id": "https://www.depresskid.top/2025/05/31/%E4%BA%8C%E5%8F%89%E6%A0%91/",
            "url": "https://www.depresskid.top/2025/05/31/%E4%BA%8C%E5%8F%89%E6%A0%91/",
            "title": "二叉树常见算法",
            "date_published": "2025-05-31T12:00:00.000Z",
            "content_html": "<h2 id=\"dfs\"><a class=\"anchor\" href=\"#dfs\">#</a> DFS</h2>\n<blockquote>\n<p>原来前/中/后序遍历都属于dfs啊 😃</p>\n</blockquote>\n<p><strong>对于二叉树的题目,其要么在从上往下的 &quot;递&quot; 过程进行判断,要么在从下往上的 &quot;归&quot; 过程操作</strong></p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-c++\"><span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">dfs模板</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">dfs</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">node</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">{</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">    fun</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">node</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">    dfs</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">    dfs</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">    ans</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">xx</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">    return</span><span style=\"color:#999999;--shiki-dark:#666666\"> ;</span></span>\n<span class=\"line\"><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">}</span></span></code></pre>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-c++\"><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//二叉树dfs前序遍历的迭代实现</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">void</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> dfs</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">root</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">{</span></span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">    stk</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">push</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">root</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">    while</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">stk</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">empty</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">{</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">        cur</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">stk</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">top</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">        stk</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">pop</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">        fun</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">cur</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">        stk</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">push</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">cur</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">        stk</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">push</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">cur</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    </span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">}</span></span>\n<span class=\"line\"><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">}</span></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//中序</span></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//优先向左访问,一直到空节点时,才从栈中取出一个节点并操作</span></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//然后尝试向右访问,在向右访问时,访问一个节点,就再把它当作根节点再次操作</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">void</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> dfs</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">root</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">{</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">\twhile</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">stk</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">empty</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;&#x26;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">cur</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">{</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        while</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">cur</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">{</span></span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">            stk</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">push</span><span style=\"color:#a13865;--shiki-dark:#d9739f\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">cur</span><span style=\"color:#a13865;--shiki-dark:#d9739f\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">            cur</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">cur</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">        </span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">}</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">        cur</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">stk</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">top</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">        skt</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">pop</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">        cur</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">cur</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    </span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">}</span></span>\n<span class=\"line\"><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">}</span></span></code></pre>\n<ul>\n<li>\n<p><a href=\"https://leetcode.cn/problems/second-minimum-node-in-a-binary-tree/\">671. 二叉树中第二小的节点</a></p>\n<blockquote>\n<p>问题转化为寻找大于根节点的最大节点 ,主要用来学习lamda函数</p>\n</blockquote>\n</li>\n</ul>\n<p>考虑剪枝操作 ,因为下面的值是越来越大的,所以用当前值更新过后后面就没必要遍历了</p>\n<ul>\n<li><a href=\"https://leetcode.cn/problems/path-sum/\">112. 路径总和</a></li>\n</ul>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-c++\"><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//1.递归 ,PathSum(TreeNode* root, int targetSum) 表示从root出发是否有和为root的路径</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">只需判断是否有从left</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">/</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">right出发和为sum</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">-</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">node</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">-</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">val的路线</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">故递推式: </span><span style=\"color:#59873A;--shiki-dark:#80A665\">PathSum</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">root</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">Sum</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#59873A;--shiki-dark:#80A665\">Path</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">Sum</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">-</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">||</span><span style=\"color:#59873A;--shiki-dark:#80A665\">Path</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">Sum</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">-</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//2.BFS</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">BFS 使用 队列 保存遍历到每个节点时的路径和，如果该节点恰好是叶子节点，并且 路径和 正好等于 sum，说明找到了解</span></span></code></pre>\n<ul>\n<li><a href=\"https://leetcode.cn/problems/sum-root-to-leaf-numbers/\">129. 求根节点到叶节点数字之和</a></li>\n</ul>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-c++\"><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//同理,考虑递归遍历与bfs</span></span>\n<span class=\"line\"><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">1.</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">前序遍历</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">  若当前节点为叶子节点</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> 将其和加到sum</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">  否则 将当前值继续传递给叶子节点 </span></span>\n<span class=\"line\"><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">2.</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">bfs</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> </span></span></code></pre>\n<ul>\n<li><a href=\"https://leetcode.cn/problems/binary-tree-right-side-view/\">199. 二叉树的右视图</a></li>\n</ul>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-c\"><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//使用后序遍历 ,由后序遍历的那个图可知 ,每层最后一次访问的为最右侧结点</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">function</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">void</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> int</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> fun </span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#999999;--shiki-dark:#666666\"> </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">[</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">]</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> node</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> int</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> depth</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#999999;--shiki-dark:#666666\"> </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">{</span></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">            //利用后序遍历的那个图可知,每层最后一次遍历到的为最右边的节点</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">            if</span><span style=\"color:#999999;--shiki-dark:#666666\"> </span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">node</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">            if</span><span style=\"color:#999999;--shiki-dark:#666666\"> </span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">depth </span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">=</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> ans</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">size</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\"> </span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">{</span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">  // 动态扩展 ans</span></span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">                ans</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">resize</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">depth </span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">+</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 1</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">            </span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">}</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">            fun</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> depth </span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">+</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 1</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">            fun</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> depth </span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">+</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 1</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">            ans</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">depth</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">]</span><span style=\"color:#999999;--shiki-dark:#666666\"> =</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> </span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">        </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">}</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//也可以使用 根右左的方法,每层第一个遍历到的是最右侧节点</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">function</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">void</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> int</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> fun </span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#999999;--shiki-dark:#666666\"> </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">[</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">]</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> node</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> int</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> depth</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#999999;--shiki-dark:#666666\"> </span><span style=\"color:rgba(255, 18, 18, 0.8);--shiki-dark:rgba(255, 18, 18, 0.8)\">{</span></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">            //利用后序遍历的那个图可知,每层最后一次遍历到的为最右边的节点</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">            if</span><span style=\"color:#999999;--shiki-dark:#666666\"> </span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">node</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">            if</span><span style=\"color:#999999;--shiki-dark:#666666\"> </span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">depth </span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">==</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> ans</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">size</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\"> </span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">{</span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">  // 动态扩展 ans</span></span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">                ans</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">push_back</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">            </span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">            fun</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> depth </span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">+</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 1</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">            fun</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> depth </span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">+</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 1</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">        </span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">}</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span></code></pre>\n<ul>\n<li><a href=\"https://leetcode.cn/problems/count-good-nodes-in-binary-tree/\">1448. 统计二叉树中好节点的数目</a></li>\n</ul>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-c++\"><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//BFS 记录路径上的最大值,比较即可</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">function</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">void</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> fun</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">[</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">]</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> node</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> lmax</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">{</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">            if</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">node</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return</span><span style=\"color:#999999;--shiki-dark:#666666\"> ;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">            if</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">=</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">lmax</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> ans</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">++</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">            lmax</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#59873A;--shiki-dark:#80A665\">max</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">lmax</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">            fun</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">lmax</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">            fun</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">lmax</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">        </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">}</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span></code></pre>\n<ul>\n<li><a href=\"https://leetcode.cn/problems/pseudo-palindromic-paths-in-a-binary-tree/\">1457. 二叉树中的伪回文路径</a></li>\n</ul>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-c++\"><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//很深刻的一题 ,对回溯的应用</span></span>\n<span class=\"line\"><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">1.</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">对于伪回文的判断</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">要求元素的出现次数满足 </span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">0</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">/</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">1</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">奇 多偶</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">因此只需要记录每条路上元素的出现情况即可</span></span>\n<span class=\"line\"><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">2.</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">在记录路上的情况时</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">要注意回溯</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">        dfs</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">[</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">]</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> node</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">{</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">            if</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">node</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return</span><span style=\"color:#999999;--shiki-dark:#666666\"> ;</span></span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">            count</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">[</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">]</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">++</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">            if</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;&#x26;!</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> check</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">            dfs</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">            dfs</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">            count</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">[</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">]</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">--</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//在遍历完左右子树后撤销对当前节点的遍历,使其在递归返回父节点时保持原样</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">        </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">}</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span></code></pre>\n<ul>\n<li><a href=\"https://leetcode.cn/problems/sum-of-nodes-with-even-valued-grandparent/\">1315. 祖父节点值为偶数的节点和</a></li>\n</ul>\n<blockquote>\n<p>非常无脑,dfs即可</p>\n</blockquote>\n<ul>\n<li><a href=\"https://leetcode.cn/problems/smallest-string-starting-from-leaf/\">988. 从叶结点开始的最小字符串</a></li>\n</ul>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-c++\"><span class=\"line\"><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">string</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> smallestFromLeaf</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> root</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">{</span></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">    //暴力写法,自顶向下遍历,记录当前节点到根节点的路径字符串,当遍历到叶子节点时,和答案比较即可</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">    string ans</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"</span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">~</span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">    function</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">void</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">string</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> dfs</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">    dfs</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">[</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">]</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> node</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">string</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> path</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">{</span></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">        //path:当前节点到根节点的路径</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">        char</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> ch</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">+</span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">'</span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">a</span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">'</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">        path</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">ch</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">+</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">path</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        if</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;&#x26;!</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> ans</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#59873A;--shiki-dark:#80A665\">min</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">ans</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">path</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        if</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> dfs</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">path</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        if</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> dfs</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">path</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    </span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">}</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">    dfs</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">root</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"\"</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">    return</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> ans</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">}</span></span></code></pre>\n<ul>\n<li><a href=\"https://leetcode.cn/problems/maximum-difference-between-node-and-ancestor/\">1026. 节点与其祖先之间的最大差值</a></li>\n</ul>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-c++\"><span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">    int</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> maxAncestorDiff</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> root</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#999999;--shiki-dark:#666666\"> </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">{</span></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">        //祖先:在同一条路径上  问题转化为找到同一条路径上的最大/小值,计算差值即可</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">        int</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> ans</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">0</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">        function</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">void</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> dfs</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">        dfs</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">[</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">]</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> node</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> mx</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> mn</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">{</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">            if</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">node</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> ans</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#59873A;--shiki-dark:#80A665\">max</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">ans</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">mx</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">-</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">mn</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">            mx</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#59873A;--shiki-dark:#80A665\">max</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">mx</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">            mn</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#59873A;--shiki-dark:#80A665\">min</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">mn</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">            dfs</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">mx</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">mn</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">            dfs</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">mx</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">mn</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">        </span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">}</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">        dfs</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">root</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">0</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        return</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> ans</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">}</span></span></code></pre>\n<ul>\n<li><a href=\"https://leetcode.cn/problems/same-tree/\">100. 相同的树</a></li>\n</ul>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-c++\"><span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">bool</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> isSameTree</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> p</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\"> TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> q</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#999999;--shiki-dark:#666666\"> </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">{</span></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">        //自上往下(dfs)和自下往上(递归)都可以</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">        bool</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> flag</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\">true</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">        function</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">void</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> dfs</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">        dfs</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">[</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">]</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> node1</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> node2</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">{</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">            if</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">node1</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;&#x26;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">node2</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">{</span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//两节点值都存在时,比较节点值</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">                if</span><span style=\"color:#a13865;--shiki-dark:#d9739f\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node1</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!=</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node2</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#a13865;--shiki-dark:#d9739f\">)</span><span style=\"color:#999999;--shiki-dark:#666666\"> </span><span style=\"color:#a13865;--shiki-dark:#d9739f\">{</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">flag</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\">false</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\">return</span><span style=\"color:#999999;--shiki-dark:#666666\"> ;</span><span style=\"color:#a13865;--shiki-dark:#d9739f\">}</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">                dfs</span><span style=\"color:#a13865;--shiki-dark:#d9739f\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node1</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node2</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#a13865;--shiki-dark:#d9739f\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">                dfs</span><span style=\"color:#a13865;--shiki-dark:#d9739f\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node1</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node2</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#a13865;--shiki-dark:#d9739f\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">            </span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">}</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">            if</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">node1</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;&#x26;!</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">node2</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return</span><span style=\"color:#999999;--shiki-dark:#666666\"> ;</span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//二者都为空节点时,不操作</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">            flag</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\">false</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">                //只有一个节点存在,返回false</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">        </span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">}</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">        dfs</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">p</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">q</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        return</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> flag</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">}</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">    bool</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> isSameTree</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> p</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\"> TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> q</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#999999;--shiki-dark:#666666\"> </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">{</span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//判断以p,q为根节点的两棵树是否相同</span></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">        //采用递归实现</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        if</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">p</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;&#x26;!</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">q</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> true</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//均为空节点,true</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        if</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">p</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;&#x26;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">q</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">||!</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">q</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;&#x26;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">p</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> false</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        if</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">p</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!=</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">q</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> false</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//终止条件,当只有一个节点或节点值不同时,退出</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        return</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> isSameTree</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">p</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">q</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;&#x26;</span><span style=\"color:#59873A;--shiki-dark:#80A665\">isSameTree</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">p</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">q</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">}</span></span></code></pre>\n<ul>\n<li><a href=\"https://leetcode.cn/problems/symmetric-tree/\">101. 对称二叉树</a></li>\n</ul>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-c++\"><span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">bool</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> isSymmetric</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> root</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#999999;--shiki-dark:#666666\"> </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">{</span></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">        //自上向下遍历dfs(迭代)</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">        bool</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> flag</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\">true</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">        function</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">void</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> dfs</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">        dfs</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">[</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">]</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> t1</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> t2</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">{</span></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">            //比较t1和t2是否轴对称</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">            if</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">t1</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">||!</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">t2</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> flag</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">t1</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">==</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">t2</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">            if</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">t1</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!=</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">t2</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> flag</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\">false</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//两个节点,判断是否相等</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">  \t\t\tdfs</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">t1</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">t2</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">            dfs</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">t1</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">t2</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">        </span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">}</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">        dfs</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        return</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> flag</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">}</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">\t//递归,判断t1和t2两棵树是否对称</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">bool</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> isSymmetric</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> t1</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> t2</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#999999;--shiki-dark:#666666\"> </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">{</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">    if</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">t1</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">||!</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">t2</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> t1</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">==</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">t2</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//当一个空节点时false,2个空节点时true,0个时不会进入该判断</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">    if</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">t1</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!=</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">t2</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> false</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//两个节点,判断是否相等</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">    return</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> isSymmetric</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">t1</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">t2</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;&#x26;</span><span style=\"color:#59873A;--shiki-dark:#80A665\">isSymmetric</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">t1</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">t2</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">}</span></span></code></pre>\n<ul>\n<li><a href=\"https://leetcode.cn/problems/flip-equivalent-binary-trees/\">951. 翻转等价二叉树</a></li>\n</ul>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-c++\"><span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">    bool</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> flipEquiv</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> root1</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\"> TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> root2</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#999999;--shiki-dark:#666666\"> </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">{</span></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">        //递归, 如果两棵树的左右子树等价,且这两棵树根节点相同,则这两棵树等价</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        if</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">root1</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">||!</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">root2</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> root1</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">==</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">root2</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        if</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root1</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!=</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root2</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> false</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//判断根节点是否相同</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        return</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> flipEquiv</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root1</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root2</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;&#x26;</span><span style=\"color:#59873A;--shiki-dark:#80A665\">flipEquiv</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root1</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root2</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">||</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">        flipEquiv</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root1</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root2</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;&#x26;</span><span style=\"color:#59873A;--shiki-dark:#80A665\">flipEquiv</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root1</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root2</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">}</span></span></code></pre>\n<ul>\n<li><a href=\"https://leetcode.cn/problems/find-a-corresponding-node-of-a-binary-tree-in-a-clone-of-that-tree/\">找出克隆二叉树中的相同节点</a></li>\n</ul>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-c++\"><span class=\"line\"><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> getTargetCopy</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> original</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\"> TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> cloned</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\"> TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> target</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#999999;--shiki-dark:#666666\"> </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">{</span></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">        //两棵树同时遍历,比较original节点与target,二者相同时返回cloned,因为二者同步所以进行一次前序遍历即可</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        if</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">original</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> NULL</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        if</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">original</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">==</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">target</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> cloned</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">        TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> lnode</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#59873A;--shiki-dark:#80A665\">getTargetCopy</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">original</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">cloned</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">target</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">        TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> rnode</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#59873A;--shiki-dark:#80A665\">getTargetCopy</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">original</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">cloned</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">target</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        return</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> lnode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">==</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\">NULL</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">?</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">rnode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">:</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">lnode</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">}</span></span></code></pre>\n<ul>\n<li><a href=\"https://leetcode.cn/problems/invert-binary-tree/\">226. 翻转二叉树</a></li>\n</ul>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-c++\"><span class=\"line\"></span></code></pre>\n<p><a href=\"https://leetcode.cn/problems/binary-tree-pruning/\">814. 二叉树剪枝</a></p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-c++\"><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">/*一道非常有意思的题,巧妙地用返回的node判断root树的子树是否有1   同样巧妙的还有判断平衡二叉树,当不平衡时返回-1;*/</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">是否需要删除子树</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">?--</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">子树中没有1即可</span></span></code></pre>\n<p><a href=\"https://leetcode.cn/problems/delete-leaves-with-a-given-value/\">1325. 删除给定值的叶子节点</a></p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-c++\"><span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">跟上一题一样</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">最后的返回条件改一下即可</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">返回null表示该树需要删除</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">否则不需要删除</span></span>\n<span class=\"line\"><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> removeLeafNodes</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> root</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> int</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> target</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#999999;--shiki-dark:#666666\"> </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">{</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        if</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">root</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> nullptr</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">        TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> lnode</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#59873A;--shiki-dark:#80A665\">removeLeafNodes</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">target</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">        TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> rnode</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#59873A;--shiki-dark:#80A665\">removeLeafNodes</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">target</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        if</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">lnode</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> root</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\">nullptr</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        if</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">rnode</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> root</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\">nullptr</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        if</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;&#x26;!</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;&#x26;</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">==</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">target</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> nullptr</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">   \t\t//该节点为叶子且值为target时,返回null,表示该树需要删除</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        else</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> root</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//否则返回root</span></span>\n<span class=\"line\"><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">}</span></span></code></pre>\n<p><a href=\"https://leetcode.cn/problems/delete-nodes-and-return-forest/\">1110. 删点成林</a></p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-c++\"><span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">如果当前节点被删除，那么就检查左</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">/</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">右孩子 是否被删除，如果没被删除，就加入答案</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">如果当前节点被删除，返回空节点，否则返回当前节点</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">    </span></span></code></pre>\n<h2 id=\"回溯\"><a class=\"anchor\" href=\"#回溯\">#</a> 回溯</h2>\n<blockquote>\n<p>每次执行完一次函数后,都会恢复到进入函数之前的状态,此乃回溯之法 ⏲️</p>\n</blockquote>\n<ul>\n<li><a href=\"https://leetcode.cn/problems/binary-tree-paths/\">257. 二叉树的所有路径</a></li>\n</ul>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-c++\"><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//1.使用临时变量,表示当前路径0.上的字符串</span></span>\n<span class=\"line\"><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">vector</span><span style=\"color:#999999;--shiki-dark:#666666\">&#x3C;</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">string</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#59873A;--shiki-dark:#80A665\"> binaryTreePaths</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> root</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#999999;--shiki-dark:#666666\"> </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">{</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">        vector</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">string</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> ans</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">        function</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">void</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">string</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> dfs</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">        dfs</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">[</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">]</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> node</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">string</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> path</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">{</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">            if</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">node</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return</span><span style=\"color:#999999;--shiki-dark:#666666\"> ;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">            path</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">+=</span><span style=\"color:#59873A;--shiki-dark:#80A665\">to_string</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">            if</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;&#x26;!</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">{</span></span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">                ans</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">push_back</span><span style=\"color:#a13865;--shiki-dark:#d9739f\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">path</span><span style=\"color:#a13865;--shiki-dark:#d9739f\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">                return</span><span style=\"color:#999999;--shiki-dark:#666666\"> ;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">            </span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">}</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">            path</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">+=</span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"</span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">-></span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">            dfs</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">path</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">            dfs</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">path</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">        </span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">}</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">        dfs</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">root</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"\"</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        return</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> ans</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">}</span></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//2.回溯,使用外部变量,记录当前的路径</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">    dfs </span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#999999;--shiki-dark:#666666\"> </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">[</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">]</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> node</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#999999;--shiki-dark:#666666\"> </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">{</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        if</span><span style=\"color:#999999;--shiki-dark:#666666\"> </span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">node</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">        int</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> old_len </span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> path</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">size</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">        path </span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">+=</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> to_string</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        if</span><span style=\"color:#999999;--shiki-dark:#666666\"> </span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> &#x26;&#x26;</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> !</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\"> </span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">{</span></span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">            ans</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">push_back</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">path</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">            path</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">resize</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">old_len</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">            return</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">        </span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">}</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">        path </span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">+=</span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"</span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">-></span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">\"</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">        dfs</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">        dfs</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">        // 回溯</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">        </span></span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">        path</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">resize</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">old_len</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//因为函数每执行一次就回溯一次,故回溯完的结果是上一层刚执行完的结果,即认为当前字符并未添加</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">}</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span></code></pre>\n<ul>\n<li>\n<p><a href=\"https://leetcode.cn/problems/path-sum-ii/\">113. 路径总和 II</a></p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-c++\"><span class=\"line\"><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">vector</span><span style=\"color:#999999;--shiki-dark:#666666\">&#x3C;</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">vector</span><span style=\"color:#999999;--shiki-dark:#666666\">&#x3C;</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#59873A;--shiki-dark:#80A665\"> pathSum</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> root</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> int</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> targetSum</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#999999;--shiki-dark:#666666\"> </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">{</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">        vector</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> path</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">        vector</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">vector</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> ans</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">        int</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> sum</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">0</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">        function</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">void</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> dfs</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">        dfs</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">[</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">]</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> node</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">{</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">            if</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">node</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return</span><span style=\"color:#999999;--shiki-dark:#666666\"> ;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">            sum</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">+=</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">            path</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">push_back</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">            if</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;&#x26;!</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;&#x26;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">sum</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">==</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">target</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> ans</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">push_back</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">path</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">            dfs</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//执行完不会影响path的值,因为其结束后会恢复到进入之前的状态</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">            dfs</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">            sum</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">-=</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//每次执行完一次函数后,都会恢复到进入函数之前的状态,此乃回溯之法</span></span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">            path</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">pop_back</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">        </span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">}</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">        dfs</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">root</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        return</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> ans</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">}</span></span></code></pre>\n</li>\n<li>\n<p><a href=\"https://leetcode.cn/problems/path-sum-iii/\">437. 路径总和 III</a></p>\n</li>\n</ul>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-c++\"><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//对于一般的二叉树的回溯, 其关键词在于 同一条路径</span></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//利用前缀和记录这条路径上的根节点路径和</span></span></code></pre>\n<h2 id=\"最近公共祖先\"><a class=\"anchor\" href=\"#最近公共祖先\">#</a> 最近公共祖先</h2>\n<ul>\n<li><a href=\"https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/\">235. 二叉搜索树的最近公共祖先</a></li>\n<li><a href=\"https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/\">236. 二叉树的最近公共祖先</a></li>\n</ul>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-c++\"><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//关键在于找到 p,q,ans 三个点的关系 ,最终ans点一定满足 左右各含一个p/q;</span></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//从下往上在回溯的过程中判断,故只能使用后序遍历,从子树中传递</span></span>\n<span class=\"line\"><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> fun</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> root</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">p</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">q</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#999999;--shiki-dark:#666666\"> </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">{</span></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">    //判断root树中是否含有p/q/ans ,若有,则返回 p/q/ans</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">    if</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">root</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">||</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">root</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">==</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">p</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">||</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">root</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">==</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">q</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> root</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">    lnode</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#59873A;--shiki-dark:#80A665\">fun</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">p</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">q</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">\t//在左子树中寻找</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">    rnode</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#59873A;--shiki-dark:#80A665\">fun</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">p</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">q</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"> //在右子树中寻找</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">    if</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">lnode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;&#x26;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">rnode</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> root</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//左右各一个,一定是答案点</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">    if</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">lnode</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> rnode</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">    return</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> lnode</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">}</span></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//对于 搜索树</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">更改最终ans的判定条件即可  ans一定满足 p</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">root</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">q 且ans</span></span>\n<span class=\"line\"><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> fun</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> root</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">p</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">q</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">{</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">    int</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> cur</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        if</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">cur</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">p</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;&#x26;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">cur</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">q</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> fun</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">p</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">q</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        if</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">cur</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">p</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;&#x26;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">cur</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">q</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> fun</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">p</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">q</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        return</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> root</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">}</span></span></code></pre>\n<p><a href=\"https://leetcode.cn/problems/validate-binary-search-tree/\">98. 验证二叉搜索树</a></p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-c++\"><span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">bool</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> isValidBST</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> root</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">{</span></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">    //\"递\"的思想,按照中序遍历,判断是否为递增即可</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">    if</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#59873A;--shiki-dark:#80A665\">isbst</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> false</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">    if</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">=</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">pre</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> false</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">    pre</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//更新pre的值</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">    return</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> isbst</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">}</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">bool</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> isBST</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> root</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> mn</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> mx</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">{</span></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">    //前序遍历,根据bst的定义来</span></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">    //按照前序遍历构建bst的过程来看,在添加每个节点时,其只需满足一定范围即可,故思路就是将这个范围逐渐往下传递,判断每个节点是否满足条件\t若当前为左,其必须小于父节点,**且受到祖先的限制**  若为右,其必须大于父节点,**且受到祖先的限制**</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">    if</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">root</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> true</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">    int</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> cur</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">    return</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> cur</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">mn</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;&#x26;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">cur</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">mx</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">        &#x26;&#x26;</span><span style=\"color:#59873A;--shiki-dark:#80A665\">isbst</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">mn</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">cur</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">        &#x26;&#x26;</span><span style=\"color:#59873A;--shiki-dark:#80A665\">isbst</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">root</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">cur</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">mx</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">}</span></span></code></pre>\n<h2 id=\"bfs\"><a class=\"anchor\" href=\"#bfs\">#</a> BFS</h2>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-c++\"><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//每一层XXX ,此时que中存储一整行的元素,每次都处理一行</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">while</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">que</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">empty</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">{</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">    int</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> n</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">que</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">siz</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">    for</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> i</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">.</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">i</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">n</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">i</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">++</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">{</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">        node</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">que</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">front</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">        que</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">pop</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        if</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> que</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">push</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        if</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> que</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">push</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    </span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">}</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">    </span></span>\n<span class=\"line\"><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">}</span></span></code></pre>\n<ul>\n<li><a href=\"https://leetcode.cn/problems/find-largest-value-in-each-tree-row/\">515. 在每个树行中找最大值</a></li>\n</ul>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-c++\"><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//que每次存储一行元素,每次操作都处理一行而不是一个</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">如何判断下一层</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">??---</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">for循环执行完就表示当前层遍历完</span></span></code></pre>\n<ul>\n<li><a href=\"https://leetcode.cn/problems/reverse-odd-levels-of-binary-tree/\">2415. 反转二叉树的奇数层</a></li>\n</ul>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-c++\"><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">/*方法1 bfs</span></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">记录当前访问的层数,若为奇数层就记录当前层的所有数值,反序赋值(利用栈与队列)</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">方法2 dfs</span></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">两颗 对称二叉树的思想,根左右和根右左 同时遍历恰好能得到对称位置,若当前层为奇数,就交换二者数值*/</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">dfs_swap</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">[</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x26;</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">]</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> node1</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">TreeNode</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> node2</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> is_odd</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">{</span></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">    \t\t//对于对称节点node1和node2,若当前层为奇数就交换二者</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">            if</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">!</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">node1</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\"> return</span><span style=\"color:#999999;--shiki-dark:#666666\"> ;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">            if</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">is_odd</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">{</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">                int</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> temp</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node1</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">                node1</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node2</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">                node2</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">temp</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">            </span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">}</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">            dfs_swap</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node1</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node2</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">is_odd</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">^</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">1</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">            dfs_swap</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node1</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">right</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">node2</span><span style=\"color:#999999;--shiki-dark:#666666\">-</span><span style=\"color:#999999;--shiki-dark:#666666\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">left</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">is_odd</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">^</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">1</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">        </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">}</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"></span></code></pre>\n<h2 id=\"二叉搜索树\"><a class=\"anchor\" href=\"#二叉搜索树\">#</a> 二叉搜索树</h2>\n<blockquote>\n<p>bro觉得最</p>\n</blockquote>\n<h2 id=\"递归\"><a class=\"anchor\" href=\"#递归\">#</a> 递归</h2>\n<p><a href=\"https://leetcode.cn/problems/count-complete-tree-nodes/\">222. 完全二叉树的节点个数</a></p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-c++\"><span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">判断当前节点是不是左叶子是无法判断的，必须要通过节点的父节点来判断其左孩子是不是左叶子</span></span></code></pre>\n<p><a href=\"https://leetcode.cn/problems/balanced-binary-tree/\">110. 平衡二叉树</a></p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-c++\"><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">/*最小不平衡树的左右高度差>1,故可以</span></span></code></pre>\n<p><img loading=\"lazy\" src=\"https://file1.kamacoder.com/i/algo/20210203155447919.png\" alt=\"平衡二叉树\" /></p>\n<blockquote>\n<p>对于所有的不平衡二叉树,其一定会有这样的最小不平衡部分</p>\n</blockquote>\n<p><a href=\"https://leetcode.cn/problems/maximum-binary-tree/\">654. 最大二叉树</a></p>\n<p><a href=\"https://leetcode.cn/problems/sum-of-left-leaves/\">404. 左叶子之和</a></p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-c++\"><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">/*对于一个节点,是无法通过它自身来判断其是否为左叶子的,所以只能通过父节点来判断其左孩子是否为叶子.</span></span></code></pre>\n",
            "tags": []
        }
    ]
}