返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言单值二叉树真题讲解
  • 560
分享到

C语言单值二叉树真题讲解

2024-04-02 19:04:59 560人浏览 独家记忆
摘要

目录一、题目描述二、解题思路【OJ - 二叉树】单值二叉树 LeetCode链接:单值二叉树 题目难度:简单 一、题目描述 如果二叉树每个节点都具有相同的值,那么该二叉树就是 单值

【OJ - 二叉树】单值二叉树

LeetCode链接:单值二叉树

题目难度:简单

一、题目描述

如果二叉树每个节点都具有相同的值,那么该二叉树就是 单值 二叉树。

只有给定的树是单值二叉树时,才返回 true;否则返回 false。

二、解题思路

二叉树的递归遍历,一般都会把问题拆分成 当前树(根节点) 和 子树,然后子树又进行拆分,来解决问题。

核心思路:

1.先判断当前节点是否为空,如果为空,返回 true(空树也满足单值二叉树的条件)

2.判断当前树是不是单值二叉树:

  • 先判断当前节点的左孩子是否为空;
  • 将 当前节点的值 与 左孩子的值 进行比较,如果相等,在右孩子不为空的情况下,继续与 右孩子的值 进行比较;
  • 如果不相等,说明 当前树 不是单值二叉树,返回 false。

3.继续往下递归遍历,判断当前节点的左右子树是不是单值二叉树。

递归过程演示:

如果 a == b && a == c 为真,说明 1 是单值二叉树。

分而治之,不断迭代,先判断 1 是不是单值二叉树,再判断 2 是不是单值二叉树,最后判断 3 是不是单值二叉树。


bool isUnivalTree(struct Treenode* root){
    // 1. 先判断当前节点是否为空
    if(root == NULL)
    {
        return true; // 空树满足单值二叉树的条件
    }
    // 2. 判断当前节点和其左右孩子是否是单值二叉树
    // 先判断当前节点的左孩子是否为空,并将当前节点的值与左孩子的值进行比较,看是否相等,
    // 如果相等,则继续往下遍历;如果不相等,说明不是单值二叉树,则返回false。
    if(root->left && root->val != root->left->val)
    {
        return false;
    }
    if(root->right && root->val != root->right->val)
    {
        return false;
    }
    // 3. 往下遍历,判断当前节点的左右子树是不是单值二叉树
    return isUnivalTree(root->left) && isUnivalTree(root->right);
}

代码中有个小思路,我们 if 的条件写的是,如果左孩子不为空,且当前节点的值 != 左孩子的值,则返回 false,那为什么不写成:如果左孩子不为空,且当前节点的值 == 左孩子的值,则怎么怎么样……呢?因为写 ==,不能直接得出一个结果,而写 !=,就能得出结果 flase。

到此这篇关于C语言单值二叉树真题讲解的文章就介绍到这了,更多相关C语言单值二叉树内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言单值二叉树真题讲解

本文链接: https://lsjlt.com/news/147073.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C语言单值二叉树真题讲解
    目录一、题目描述二、解题思路【OJ - 二叉树】单值二叉树 LeetCode链接:单值二叉树 题目难度:简单 一、题目描述 如果二叉树每个节点都具有相同的值,那么该二叉树就是 单值 ...
    99+
    2024-04-02
  • C语言平衡二叉树真题练习
    目录一、题目描述二、解题思路自顶向下的递归(暴力解法)自底向上的递归(最优解法)题目难度:简单 LeetCode链接:平衡二叉树 一、题目描述 给定一个二叉树,判断它是否是高度平衡的...
    99+
    2024-04-02
  • C语言近万字为你讲透树与二叉树
    目录一、树概念及结构1.1 树的概念1.2 树的相关概念1.3 树的表示二、二叉树概念及结构2.1 概念2.2 特殊的二叉树:2.3 二叉树的性质2.4 二叉树的存储结构1. 顺序存...
    99+
    2024-04-02
  • C语言平衡二叉树详解
    目录调整措施:一、单旋转二、双旋转AVL树的删除操作:删除分为以下几种情况:1.要删除的节点是当前根节点T。2、要删除的节点元素值小于当前根节点T值,在左子树中进行删除。3、要删除的...
    99+
    2024-04-02
  • C++超详细讲解树与二叉树
    目录树树的定义树的名词解释树的表示树的存储结构二叉树的概念及结构二叉树的概念二叉树的性质二叉树的存储结构顺序存储结构链式存储结构树 树的定义 Q:什么是树 A:树是一种 非线性 的数...
    99+
    2024-04-02
  • C语言平衡二叉树问题怎么解决
    这篇文章主要介绍“C语言平衡二叉树问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言平衡二叉树问题怎么解决”文章能帮助大家解决问题。一、题目描述给定一个二叉树,判断它是否是高度平衡的二...
    99+
    2023-06-30
  • C语言之平衡二叉树详解
    目录什么是平衡二叉树平衡二叉树的基本特点为什么会出现平衡二叉树二叉树四种不平衡的情况C语言实现平衡二叉树什么是平衡二叉树 平衡二叉树是具有平衡属性的有序二叉树,所谓的平衡即当前树的左...
    99+
    2023-05-17
    C语言二叉树 C语言平衡二叉树
  • C语言深入浅出解析二叉树
    目录树概念及结构相关概念树的表示树在实际中的运用(表示文件系统的目录树结构)二叉树概念及结构概念需要注意的特殊二叉树二叉树的性质二叉树的存储结构顺序存储链式存储总结树概念及结构 树是...
    99+
    2024-04-02
  • C语言线索二叉树基础解读
    目录线索二叉树的意义线索二叉树的定义线索二叉树结构的实现二叉树的线索存储结构二叉树的中序线索化线索二叉树的中序遍历总结线索二叉树的意义 对于一个有n个节点的二叉树,每个节点有指向左右...
    99+
    2024-04-02
  • C语言二叉树层序遍历
    实现下面图中的二叉树层序遍历 #include <stdio.h> #include <stdlib.h> #include <stdbool.h&g...
    99+
    2024-04-02
  • C语言之二叉树的遍历
    目录0.写在前面1.前序遍历步骤详解代码实现2.中序遍历步骤详解代码实现3.后序遍历步骤详解代码实现0.写在前面 认识二叉树结构最简单的方式就是遍历二叉树。所谓遍历二叉树就是按照某种...
    99+
    2023-05-14
    C语言实现二叉树遍历 二叉树遍历
  • C++LeetCode543题解二叉树直径
    目录LeetCode 543.二叉树的直径方法一:深度优先搜索求二叉树的深度AC代码C++LeetCode 543.二叉树的直径 力扣题目链接:leetcode...
    99+
    2022-12-16
    C++ 二叉树直径 C++ LeetCode
  • C语言树与二叉树基础全刨析
    目录一、树的概念和结构1.1 树的概念1.2 树的结构 & 相关名词解释1.3 树的表示1.4 树的应用二、二叉树的概念 & 存储结构(重要)2.1 二叉树的概念2....
    99+
    2024-04-02
  • C语言数据结构之二叉树详解
    目录1. 树概念及结构1.1树概念1.2树的表示2. 二叉树概念及结构2.1概念2.2数据结构中的二叉树2.3特殊的二叉树2.4二叉树的存储结构2.5二叉树的性质3. 二叉树顺序结构...
    99+
    2024-04-02
  • C语言二叉树的概念结构详解
    目录1、树的概念及结构(了解)1.1树的概念:1.2树的表示法:2、二叉树的概念及结构2.1二叉树的概念2.2特殊的二叉树2.2二叉树的性质2.3二叉树的顺序存储2.4二叉树的链式存...
    99+
    2022-11-13
    C语言二叉树 C语言二叉树的创建
  • C语言 超详细总结讲解二叉树的概念与使用
    目录1.二叉树的概念及结构 2.二叉树链式结构的实现1.二叉树的概念及结构  ①概念:一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别...
    99+
    2024-04-02
  • C语言二叉树的操作方法
    本篇内容主要讲解“C语言二叉树的操作方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言二叉树的操作方法”吧!二叉树分类满二叉树除最后一层无任何子节点外,每一层上的所有结点都有两个子结点的二...
    99+
    2023-06-30
  • C语言数据结构系列篇二叉树的概念及满二叉树与完全二叉树
    链接:C语言数据结构系列之树的概念结构和常见表示方法 0x00 概念 定义:二叉树既然叫二叉树,顾名思义即度最大为2的树称为二叉树。 它的度可以为 1 也可...
    99+
    2024-04-02
  • C语言数据结构之二叉链表创建二叉树
    目录一、思想(先序思想创建)二、创建二叉树(1)传一级参数方法(2)传二级参数方法一、思想(先序思想创建) 第一步先创建根节点,然后创建根节点左子树,开始递归创建左子树,直到递归创建...
    99+
    2024-04-02
  • C语言实例实现二叉搜索树详解
    目录有些算法题里有了这个概念,因为不知道这是什么蒙圈了很久。 先序遍历: root——>left——>right 中序遍历...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作