Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >题目描述

题目描述

作者头像
WeiMLing
发布于 2022-05-06 08:12:59
发布于 2022-05-06 08:12:59
38500
代码可运行
举报
文章被收录于专栏:WeiMLingWeiMLing
运行总次数:0
代码可运行

题目描述

输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)

一 . 二叉树的概念

树形结构是一种典型的非线性结构,除了用于表示相邻关系外,还可以表示层次关系。每个结点最多有两棵子树。左子树和右子树是有顺序的,次序不能任意颠倒。即使树中某结点只有一棵子树,也要区分它是左子树还是右子树。即为下图。。

C#定义二叉树:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class BinaryTreeNode
    {
        //节点
        public int Data { get; set; }
        //左子树
        public BinaryTreeNode leftChild { get; set; }
        //右子树
        public BinaryTreeNode rightChild { get; set; }
        //数据域
        public BinaryTreeNode(int data)
        {
            this.Data = data;
        }
         //指针域
        public BinaryTreeNode(int data, BinaryTreeNode left, BinaryTreeNode right)
        {
            this.Data = data;
            this.leftChild = left;
            this.rightChild = right;
        }
    }

二 . 题目分析

        A-B两个二叉树,判断B是否为A的子结构。

        想法:该题使用递归法。步骤为:在树A中找到和B的根结点的值一样的结点;判断以该节点为中心的左右子树是否相同,相同即为子结构,不同继续递归,直到结束。

三 . 代码实现:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution
{
    public bool HasSubtree(TreeNode pRoot1, TreeNode pRoot2)
    {
        // write code here
        if(pRoot1 == null || pRoot2 == null)
        {
            return false;
        }
        else
        {
            return Judge(pRoot1,pRoot2);
        }
    }
    public static bool Judge(TreeNode pRoot1, TreeNode pRoot2)
    {
        //解释说是pRoot2如果全部遍历完且与pRoot1一一对应,则返回正确
        //如果pRoot2还没遍历完,而pRoot1已经遍历结束,则错误。
         if (pRoot2 == null)
         {   
             //递归成功条件,什么意思呢,比如B仅有一个节点,且存在和A一样的节点,那肯定是是咯
             return true;
         }
         if (pRoot1 == null)
         {
             //递归失败条件,如果你一直递归下去,A都结束了,还没找到,那肯定不是咯。
             return false;
         }
         if (pRoot1.val == pRoot2.val)
         {
             //递归成功条件2,左右节点都一样
             if (Judge(pRoot1.left,pRoot2.left) && Judge(pRoot1.right,pRoot2.right))
             {
                 return true;
             }
         }
         //递归
         return Judge(pRoot1.left,pRoot2) || Judge(pRoot1.right,pRoot2);
     }
}

PS:该题考点依旧是代码的鲁棒性,所以要格外注意,其实貌似就这么一处吧if(pRoot1 == null || pRoot2 == null)。。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-05-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
​轻松掌握vuex,让你对状态管理有一个更深的理解
Vuex 是一个专为 Vue.js 应用程序开发的 状态管理模式 。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化
前端老鸟
2019/07/29
3.4K0
Vue项目进阶:再谈Pinia函数式(composition API)用法
Hello大家好,前段时间写了一篇关于Pinia的composition API用法的文章《Pinia进阶:优雅的setup(函数式)写法+封装到你的企业项目》,收到了不少朋友的反馈和建议。笔者也结合最近项目情况和网友们的建议做一次优化,也算是一个比较完整的版本了,这包括:
南山种子外卖跑手
2022/04/21
3.5K0
Vue项目进阶:再谈Pinia函数式(composition API)用法
Pinia.js - Vue新一代状态管理器
安装成功会把依赖加在 package.json 的 dependencies 中。
青年码农
2022/09/27
1.3K1
Pinia.js - Vue新一代状态管理器
Vue3之状态管理:Vuex和Pinia,孰强孰弱?
在前端开发中,状态管理器是一种用于管理应用程序全局状态的工具。它通常用于大型应用程序,可以帮助开发者更好地组织和管理状态,并提供一些强大的工具来简化状态的变更和使用。
用户6297767
2023/11/21
2.8K0
Vue3之状态管理:Vuex和Pinia,孰强孰弱?
制作一个轻量级的状态管理插件:Vue-data-state
Vuex 是针对 Vue2 来设计的,因为 option API 本身有很多缺点,所以 Vuex 只好做各种补丁弥补这些缺点,于是变得比较“复杂”。
用户1174620
2021/04/28
8920
制作一个轻量级的状态管理插件:Vue-data-state
Pinia入门-实现简单的用户状态管理
在整个应用程序中访问的数据(且不需要被持久化),例如导航栏中显示的用户信息,以及需要通过页面保留的数据,例如一个非常复杂的多步骤表格。
luciozhang
2023/04/22
7940
Vue 框架学习系列五:Vue 3 与状态管理库 Pinia 的深度集成
在构建复杂的 Vue.js 应用时,状态管理是一个重要的考虑因素。Vuex 是 Vue.js 官方推荐的状态管理库,但随着 Vue 3 和 Composition API 的发布,一个新的状态管理库 Pinia 开始崭露头角。Pinia 提供了与 Vue 3 和 Composition API 更紧密的集成,同时保持了 Vuex 的核心概念,如 state、mutations、actions 和 getters。本篇文章将探讨如何在 Vue 3 应用中深度集成 Pinia。
china马斯克
2024/10/04
4240
Pinia 入门:零基础开启 Vue 状态管理之旅
在现代 Vue 应用开发中,高效的状态管理是构建强大、可维护应用的关键。Pinia 作为一种新兴的状态管理方案,为 Vue 开发者带来了全新的体验。本文将带你从零开始,深入了解 Pinia 的基础知识,开启 Vue 状态管理的精彩之旅。
程序媛夏天
2024/11/19
4560
pinia核心笔记
记录pinia核心源码阅读笔记,这里跳过hmr(热更新), mapHelpers(class 工具)等工具源码。 剔除的部分vue2.0兼容代码。 当前pinia版本2.0.13
copy_left
2022/05/13
1.1K0
pinia核心笔记
vue3了,试试轻量化的Vuex -- Pinia?
Pinia 是 Vue.js 的轻量级状态管理库,最近很受欢迎。它使用 Vue 3 中的新反应系统来构建一个直观且完全类型化的状态管理库。
玖柒的小窝
2021/11/04
1.6K0
vue3了,试试轻量化的Vuex -- Pinia?
学习 Vue 3 全家桶 - vuex
现代 Web 应用都是由三大件构成,分别是:组件、数据和路由。在一些数据组件之间需要共享的时候,应该如何实现?
Cellinlab
2023/05/17
3600
学习 Vue 3 全家桶 - vuex
测试一下Pinia,Vuex 要出局了?
自从我开始使用Vue 3和组合API以来,我也尝试使用 Pinea 作为状态管理库。如果是从是 vue2 和 vuex 过来的,就会觉得用起来差别还是很大的。
前端小智@大迁世界
2022/09/01
6720
测试一下Pinia,Vuex 要出局了?
感受 Vue 新的状态管理工具之美之 Pinia---学习篇
相信在Vue中提到状态管理,大家一定会想到 Vuex。的确 Vuex确实是比较强大的,但Vuex 多少有点重,而且对 Typescript的支持也不是那么的友好,同时门槛也比较高,学习成本比较大。
用户9078190
2022/10/28
2640
感受 Vue 新的状态管理工具之美之 Pinia---学习篇
【玩转全栈】---- Pinia 组件状态管理器
Pinia 是一个用于 Vue 3 的状态管理库,旨在提供更加简洁、直观且灵活的状态管理模式。它由 Vue 官方团队成员开发,以其轻量级和高性能著称。Pinia 支持 Vue 3 的组合式 API,并允许开发者以一种更自然的方式组织和共享应用状态。与 Vuex 不同,Pinia 去除了复杂的概念如模块嵌套,转而采用扁平化的 store 结构,使得代码更加清晰易懂。此外,Pinia 还支持 TypeScript,提供了优秀的类型推断能力,增强了开发体验。通过 Pinia,你可以轻松地创建多个独立的 store 模块,每个模块都可以拥有自己的 state(状态)、getters(计算属性)、actions(方法)等,极大地简化了复杂应用中的状态管理。其灵活性还体现在对插件系统的良好支持,可以方便地扩展功能。总的来说,Pinia 是现代 Vue 应用中进行状态管理的理想选择。
用户11404404
2025/03/12
1490
Vue3中使用Pinia详解
Pinia是一个专门为Vue.js设计的状态管理库,它提供了一种简单和直观的方式来管理应用程序的状态。在使用Pinia时,可以轻松地创建定义状态的存储,然后将其与Vue组件绑定,使它们能够使用该状态。和上一个博客提到的Vuex相比,Pinia 更加简单易用,体积更小,同时具有更好的 TypeScript 支持和插件系统。
九仞山
2023/10/14
1.1K0
使用 Vue 3 与 TypeScript 构建 Web 应用: Todo
引言 界面: Vue.js 3 JavaScript 超集: TypeScript 包管理器: pnpm 前端工程化/打包: Vite 路由: Vue Router 状态管理: Pinia CSS 预处理器: Less 代码格式化: Prettier 代码质量: ESLint 预览
yiyun
2023/07/17
1.3K0
使用 Vue 3 与 TypeScript 构建 Web 应用: Todo
告别Vuex,发挥compositionAPI的优势,打造Vue3专用的轻量级状态 定义main.jscontroller组件设置监听和钩子局部状态
Vuex 是基于 Vue2 的 option API 设计的,因为 optionAPI 的一些先天问题,所以导致 Vuex 不得不用各种方式来补救,于是就出现了 getter、mutations、action、module、mapXXX 这些绕圈圈的使用方式。想要使用 Vuex 就必须先把这些额外的函数给弄明白。
用户1174620
2021/10/20
1.1K0
一文梳理vue面试题知识点
Vue3.x 改用 Proxy 替代 Object.defineProperty。因为 Proxy 可以直接监听对象和数组的变化,并且有多达 13 种拦截方法。
bb_xiaxia1998
2022/10/24
9870
快速了解并使用pinia
Pinia 是 Vue 的专属状态管理库,它允许你跨组件或页面共享状态。它和vuex的作用一样都是做状态管理的。
用户9914333
2022/12/14
8270
快速了解并使用pinia
pinia基本使用介绍
比如开始的时候我们可以使用缓存进行同步数据,虽然很low但是它确实属于一种方案,但是这种方案的实时性很差,也就是很难做到信息的及时同步,虽然你可以写很多监听来达到一个同步的效果,但是代码维护起来就会很笨重
何处锦绣不灰堆
2022/09/21
9230
相关推荐
​轻松掌握vuex,让你对状态管理有一个更深的理解
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档