首页 > 试题广场 >

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

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


数据范围:二叉树节点数满足 ,二叉树上的值满足
要求:空间复杂度 ,时间复杂度

注意:空子树我们认为同时符合搜索二叉树和完全二叉树。
示例1

输入

{2,1,3}

输出

[true,true]
示例2

输入

{1,#,2}

输出

[true,false]

说明

由于节点的右儿子大于根节点,无左子树,所以是搜索二叉树但不是完全二叉树     
示例3

输入

{}

输出

[true,true]

说明:本题目包含复杂数据结构TreeNode,点此查看相关信息
头像 ajaj
发表于 2021-07-18 19:18:27
精华题解 思路: 从题中给出的有效信息: 二叉树是否为搜索二叉树和完全二叉树 故此 二叉树 搜索树采用递归的方式解决,完全二叉树使用bfs对其进行求解 方法一:递归+广度优先遍历 具体做法:搜索树:使用递归的方式进行求解,判断该二叉树的左子树不为空,则左子树上所有节点的值均小于的根节点的值; 若它的右子树 展开全文
头像 牛客786963925号
发表于 2021-07-12 18:06:59
精华题解 解法一:中序遍历(递归)+ 层次遍历 一棵「二叉搜索树」需要满足要求:对于每个结点,左子树上的所有结点小于它,右子树上的所有结点大于它。 判断一棵二叉树是否为「二叉搜索树」的通用方法为:对该二叉树进行中序遍历,若遍历结果为「严格」单调递增的,则是一棵二叉搜索树,否则不是。 这是因为:中序遍历的步骤是 展开全文
头像 下一次什么时候可以修改昵称
发表于 2020-11-01 14:45:28
LeetCode98. 验证二叉搜索树 算法 1.递归 2.重载一个函数,界定节点值的范围(lower, upper) 3.递归判断左子树和右子树是否是二叉搜索树 public boolean isValidBST(TreeNode root) { return isValidBST 展开全文
头像 laugh_often
发表于 2021-02-26 11:50:37
/**  * struct TreeNode {  * int val;  * struct TreeNode *left;  * struct TreeNode *right; 展开全文
头像 摸鱼学大师
发表于 2021-07-14 20:04:13
思路: 关于搜索二叉树的知识:搜索二叉树左子树上所有值小于根节点,右子树上所有值大于根节点,中序遍历后得到的是一个递增序列。 关于完全二叉树的知识:完全二叉树叶节点只能出现在最下层和次下层,并且最下面一层的节点都集中在该层最左边的若干位置的二叉树,出现叶子节点以后的节点都是叶子。 由此,可用二叉树 展开全文
头像 执子一白
发表于 2020-12-03 11:32:24
递归套路,主要是分解信息和合并左右子树需要提供的信息。当前节点是完全二叉树条件:左子树为完全二叉树 右子树也为完全二叉树 且 左树为空时右树必须为空当前节点是二叉搜索树条件:左右子树都为搜索树 且 左树根节点值及其根节点右节点都小于当前节点。右树同理上代码: import java.util.*; 展开全文
头像 自由的走狗
发表于 2020-12-28 16:14:00
import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */ public class Sol 展开全文
头像 我要拿大厂SP
发表于 2021-12-08 14:44:00
判断是否为搜索二叉树用中序遍历 判断是否为完全二叉树用层次遍历 * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ class Solution { publ 展开全文
头像 牛客92485225号
发表于 2021-11-01 15:19:57
二叉搜索树 中序遍历 当前值比前一个值都要大,反之不是二叉搜索树 完全二叉树 就是个堆排序 import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * 展开全文
头像 勤奋的猫
发表于 2022-06-20 20:02:05
import java.util.*; /*  * public class TreeNode {  *   int val = 0;  * &nb 展开全文
头像 K_King
发表于 2021-12-05 13:36:36
* struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ class Solution { public: /** * * @param 展开全文
头像
发表于 2021-03-25 22:09:02
层次遍历判断是否是完全二叉树, 中序遍历判断是否是二叉搜索树 /** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ class Sol 展开全文