zoukankan      html  css  js  c++  java
  • Validate Binary Search Tree

    Validate Binary Search Tree

    Total Accepted: 73179 Total Submissions: 359616 Difficulty: Medium

    Given a binary tree, determine if it is a valid binary search tree (BST).

    Assume a BST is defined as follows:

    • The left subtree of a node contains only nodes with keys less than the node's key.
    • The right subtree of a node contains only nodes with keys greater than the node's key.
    • Both the left and right subtrees must also be binary search trees.

    confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.

    OJ's Binary Tree Serialization:

    The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.

    Here's an example:

       1
      / 
     2   3
        /
       4
        
         5
    
    The above binary tree is serialized as "{1,2,3,#,#,4,#,#,5}".
     
    BST的中序遍历结果是有序的,可根据这个性质进行判读
    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        bool inorder(TreeNode* root,TreeNode** pre){
            if(!root) return true;
            
            bool is_left_valid = inorder(root->left,pre);
            
            if(!is_left_valid) return false;
            
            if(*pre != NULL){
                if((*pre)->val >= root->val){
                    return false;
                }
            }
            
            *pre =root;
            
            return inorder(root->right,pre);
        }
        bool isValidBST(TreeNode* root) {
            TreeNode* pre = NULL;
            return inorder(root,&pre);
        }
    };
    //[1,1]
    //[5,3,8,2,4,7,9]
    //[10,5,15,null,null,6,20]

     

  • 相关阅读:
    三角形外接圆与内切圆
    不等式证明
    不等式证明
    被 6 整除
    被 6 整除
    从切比雪夫不等式到大数定理
    JAVA轻量级文件监控
    Windows应用程序的消息处理机制
    JUnit中@Test的运行顺序
    MyReport报表引擎2.2.0.0新功能
  • 原文地址:https://www.cnblogs.com/zengzy/p/5055309.html
Copyright © 2011-2022 走看看