首页 > 试题广场 >

判断一棵二叉树是否为搜索二叉树和完全二叉树

[编程题]判断一棵二叉树是否为搜索二叉树和完全二叉树
  • 热度指数:2386 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一棵二叉树,已经其中没有重复值的节点,请判断该二叉树是否为搜索二叉树和完全二叉树。

输入描述:
第一行输入两个整数 n 和 root,n 表示二叉树的总节点个数,root 表示二叉树的根节点。

以下 n 行每行三个整数 fa,lch,rch,表示 fa 的左儿子为 lch,右儿子为 rch。(如果 lch 为 0 则表示 fa 没有左儿子,rch同理)

ps:节点的标号就是节点的值


输出描述:
第一行输出该二叉树是否为搜索二叉树的答案,如果是则输出 "true",否则输出 "false"。

第二行输出该二叉树是否为完全二叉树的答案,如果是则输出 "true",否则输出 "false"。
示例1

输入

3 2
2 1 3
1 0 0
3 0 0

输出

true
true

备注:

头像 我要出去乱说
发表于 2022-06-29 10:30:16
1、思路 对于二叉搜索树的判断,可以在中序遍历时保存前一个节点的值,每次比较当前节点值与前一节点值,若前一节点值较大,则该二叉树不是二叉搜索树; 对于完全二叉树的判断,可以按照以下标准进行: 1、层序遍历二叉树; 2、若当前节点有右子节点却没有左子节点,则直接返回false; 3、若 展开全文
头像 WYJ96
发表于 2021-07-27 04:33:07
import java.io.*; import java.util.*; public class Main { static class Node{ int value; Node left; Node right; p 展开全文
头像 Jim-zht
发表于 2021-10-29 19:44:25
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int len = sc 展开全文