• leetcode--Validate Binary Search Tree


    1.题目描述

    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.

    2.解法分析

    对树进行先序遍历,如果先序遍历的过程中始终有前一个元素比后一个元素小,那么就是一棵有效的BST,反之则不是

    /**
     * Definition for binary tree
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        bool isValidBST(TreeNode *root) {
            // Start typing your C/C++ solution below
            // DO NOT write int main() function
            if(!root)return true;
            vector<TreeNode *> v;
            
            int cur;
            int prev;
            bool firstRound=true;
            TreeNode *curT=root;
            
            while(curT||!v.empty())
            {
                while(curT)
                {
                    v.push_back(curT);
                    curT=curT->left;
                }
                if(!v.empty())
                {
                    curT=v.back();v.pop_back();
                    if(firstRound){cur=curT->val;prev=cur;firstRound=false;}
                    else 
                    {
                        cur=curT->val;
                        if(cur<=prev)return false;
                        prev=cur;
                    }
     
                    curT=curT->right;
                }
            }
            
            return true;
            
        }
    };
  • 相关阅读:
    css3学习笔记之效果
    css3学习笔记之2D转换
    css3学习笔记之文本效果
    css3学习笔记之渐变
    css3学习笔记之背景
    css3学习笔记之边框
    AngularJs 入门参考代码
    环形矩阵
    Qt编写串口通信程序全程图文讲解[转]
    Qt操作Sqlite数据库
  • 原文地址:https://www.cnblogs.com/obama/p/3261004.html
Copyright © 2020-2023  润新知