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。

  • 相关阅读:
    数组快速排序法
    javascript 的基本优化
    wdlinux mysql innodb的安装
    中文逗号替换为英文逗号 ,中英文逗号互换
    wdlinux 编译pdo_mysql
    nodejs 简单对mongodb 操作
    node.js 安装
    开启 mysql 的远程连接功能
    文件下载到本地
    webpack基础+webpack配置文件常用配置项介绍+webpack-dev-server
  • 原文地址:https://www.cnblogs.com/fenshen371/p/5162043.html
Copyright © 2011-2022 走看看