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

    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.

    思路:二叉搜索树如果按照in-order traversal来遍历的话,所有节点会按照从小到大的顺序被遍历。

    Pre-order

    1. Display the data part of the root (or current node).
    2. Traverse the left subtree by recursively calling the pre-order function.
    3. Traverse the right subtree by recursively calling the pre-order function.

    In-order

    1. Traverse the left subtree by recursively calling the in-order function.
    2. Display the data part of the root (or current node).
    3. Traverse the right subtree by recursively calling the in-order function.

    In a BST, in-order traversal retrieves data in sorted order.

    Post-order

    1. Traverse the left subtree by recursively calling the post-order function.
    2. Traverse the right subtree by recursively calling the post-order function.
    3. Display the data part of the root (or current node).
     1 class Solution {
     2 public:
     3     bool validate(TreeNode* root, TreeNode* &pre)
     4     {
     5         if (root == NULL) return true;
     6         if (!validate(root->left, pre)) return false;
     7         if (pre != NULL && pre->val >= root->val) return false;
     8         pre = root;
     9         return validate(root->right, pre);
    10     }
    11     bool isValidBST(TreeNode* root) {
    12         TreeNode* pre = NULL;
    13         return validate(root, pre);
    14     }
    15 };

    代码中,我用了一个全局指针pre来记录in-order traversal过程中的上一个节点。如果上一个节点的值比当前节点的值要大或者相等,则不是BST。

  • 相关阅读:
    Visual Studio的框选代码区块功能
    序列化和反序列化
    使用C#采集Shibor数据到Excel
    LiveCharts文档-4基本绘图-3其他
    LiveCharts文档-4基本绘图-2基本柱形图
    LiveCharts文档-4基本绘图-1基本线条图
    LiveCharts文档-3开始-8自定义工具提示
    LiveCharts文档-3开始-7标签
    LiveCharts文档-3开始-6轴Axes
    LeetCode题解汇总(包括剑指Offer和程序员面试金典,持续更新)
  • 原文地址:https://www.cnblogs.com/fenshen371/p/5162043.html
Copyright © 2011-2022 走看看