当前位置: 首页 > 知识库问答 >
问题:

二叉树验证

郭盛
2023-03-14

一直在研究一些黑客等级破解编码面试问题,最近才发现这一个:二叉树问题。

在问题描述中,作者介绍了被认为是有效的二叉树的内容。

“节点左侧子树中每个节点的值都小于该节点的数据值。

然而他们提到这棵树

是有效的。但根据他们对有效二叉搜索树的描述,这棵树不是无效的吗,因为节点4有一个节点5的左子节点,后者更大。还是我误解了什么是有效的BST?

共有1个答案

仉宪
2023-03-14

Q: 但根据他们对有效二叉搜索树的描述,这棵树不是无效的吗,因为节点4有一个节点5的左子节点,后者更大。还是我误解了什么是有效的BST?

你说得对。在这种情况下,他们陈述的图像和线条是相互矛盾的。

作者明确阐述了有效BST的以下定义:

出于这个挑战的目的,我们将二叉查找树定义为具有以下属性的二叉树:

> < li>

节点左侧子树中每个节点的数据值都小于该节点的数据值。

节点右侧子树中每个节点的数据值都大于该节点的数据值。

每个节点的数据值都是不同的。

因此,图像中的树不符合有效BST的条件。

 类似资料:
  • 上面的代码对所有测试用例都能很好地工作。但是,下面的代码不是。 额外的IF条件有什么需要?即使没有它们,函数也应该从下面的if条件返回false?我错过了什么?

  • 我的解决方案在第二个例子中失败了,我不知道为什么,请解释。 问题是: 给定一棵二叉树,确定它是否是有效的二叉查找树(BST)。 假设BST的定义如下: 节点的左子树只包含键小于节点键的节点。节点的右子树仅包含键大于节点键的节点。左子树和右子树都必须是二进制搜索树。 例1: 输入:[2,1,3] 输出:真 例2: 输入:[5,1,4,空,空,3,6] 输出:false 说明:根节点的值为5,但其右子

  • 二叉树 二叉树采用二叉链表存储,要求根据给定的先序遍历序列和中序遍历序列建立二叉树,并输出后序遍历序列、结点总数、叶子数、度为1的结点数、度为2的结点数。 输入格式: 测试数据有多组,处理到文件尾。每组测试数据的第一行输入结点数n(1≤n≤10),第二、三行各输入n个整数,分别表示二叉树的先序遍历序列和中序遍历序列。 输出格式: 对于每组测试,在一行上分别输出该二叉树的后序遍历序列,结点总数,叶子

  • 主要内容:什么是二叉排序树?,使用二叉排序树查找关键字,二叉排序树中插入关键字,二叉排序树中删除关键字,总结前几节介绍的都是有关静态 查找表的相关知识,从本节开始介绍另外一种查找表—— 动态查找表。 动态查找表中做查找操作时,若查找成功可以对其进行删除;如果查找失败,即表中无该关键字,可以将该关键字插入到表中。 动态查找表的表示方式有多种,本节介绍一种使用树结构表示动态查找表的实现方法—— 二叉排序树(又称为 “二叉查找树”)。 什么是二叉排序树? 二叉排序树要么是空 二叉树,要么具有如下特点:

  • 树的特征和定义 树(Tree)是元素的集合。我们先以比较直观的方式介绍树。下面的数据结构是一个树: 树有多个节点(node),用以储存元素。某些节点之间存在一定的关系,用连线表示,连线称为边(edge)。边的上端节点称为父节点,下端称为子节点。树像是一个不断分叉的树根。 每个节点可以有多个子节点(children),而该节点是相应子节点的父节点(parent)。比如说,3,5是6的子节点,6是3,

  • 2. 二叉树 2.1. 二叉树的基本概念 链表的每个节点可以有一个后继,而二叉树(Binary Tree)的每个节点可以有两个后继。比如这样定义二叉树的节点: typedef struct node *link; struct node { unsigned char item; link l, r; }; 这样的节点可以组织成下图所示的各种形态。 图 26.9. 二叉树的定义和举例 二叉树可