美文网首页
检查是否为BST

检查是否为BST

作者: 正在努力ing | 来源:发表于2018-08-26 16:01 被阅读0次

题目:

请实现一个函数,检查一棵二叉树是否为二叉查找树。
给定树的根结点指针TreeNode* root,请返回一个bool,代表该树是否为二叉查找树

  这个题目还要考虑cur.left.right > cur这种情况 ,所以就不能用下面的思路:
递归,每一层考虑cur是否满足大于左节点并且小于右节点

      2.5
     /   \
    2     3
   / \   / \
  1   3 2   4

思路:
中序遍历
方法一:
利用辅助数组,把中序遍历的结果存入,看熟不是升序的

方法二:
既然是中序遍历,那么只要用一个辅助变量记录上次的值,只要这次节点的值大于上次节点的值,那么就是升序的

# -*- coding:utf-8 -*-
import sys


class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None


class Checker:

    def checkBST(self, root):
        # write code here
        self.arr = []
        self.bsf(root)
        return self.arr == sorted(self.arr)

    def bsf(self,root):
        if not root:
            return
        self.bsf(root.left)
        self.arr.append(root)
        self.bsf(root.right)


方法二:

有false发生就返回,

class Checker:

    mi = -9999
    def checkBST(self,root):

        if not root:
            return True
        if not self.checkBST(root.left):
            return False

        if root.val > self.mi:
            self.mi = root.val
        else:
            return False

        if not self.checkBST(root.right):
            return False

        return True

相关文章

  • 检查是否为BST

    题目: 请实现一个函数,检查一棵二叉树是否为二叉查找树。 给定树的根结点指针TreeNode* root,请返回一...

  • 检查是否为BST

    题目: 请实现一个函数,检查一棵二叉树是否为二叉查找树。 给定树的根结点指针TreeNode* root,请返回一...

  • Validate Binary Search Tree

    medium Question 判断一个二叉树是否为,二叉搜索树(BST) Notes BST的特点: 节点的左支...

  • UITextFiled点击无法弹出键盘

    检查是否textField.userInteractionEnabled是否设置为NO检查是否superView....

  • 98. Validate Binary Search Tree

    BST可以考虑中序遍历,如果合法,得到的结果总是递增的,我们通过对IN-ORDER的结果进行依次检查来判断其是否是...

  • iOS正则表达式:总有你想要的

    一、常用的正则:1、判断是不是QQ号 2、检查是否为合法手机号码 3、检查是否为合法Email地址 4、检查是否为...

  • [lintcode]95.验证二叉查找树

    描述 给定一个二叉树,判断它是否是合法的二叉查找树(BST)一棵BST定义为:节点的左子树中的值要严格小于该节点的...

  • LintCode 95. 验证二叉查找树

    题目描述 给定一个二叉树,判断它是否是合法的二叉查找树(BST) 一棵BST定义为:节点的左子树中的值要严格小于该...

  • 检查obj是否为空

    在jQuery中,可以调用名为$.isEmptyObject的工具函数,检测一个对象的内容是否为空,如果为空,则该...

  • 检查是否为原始obj

    调用名为$.isPlainObject的工具函数,能检测对象是否为通过{}或new Object()关键字创建的原...

网友评论

      本文标题:检查是否为BST

      本文链接:https://www.haomeiwen.com/subject/zruoiftx.html