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。

  • 相关阅读:
    PasswordHasher 算法
    Java的环境变量配置
    CSS2+DIV的学习心得
    struts2利用token机制拦截用户重复提交
    电脑开机出现 error: no such partition grub rescue
    MySQL limit实际用法的详细解析
    win7将硬盘由ATA修改为AHCI的方法
    与SVN相关的程序的调试问题【转】
    【转】JSP提交表单
    LigerUI 快速开发UI框架 链接
  • 原文地址:https://www.cnblogs.com/fenshen371/p/5162043.html
Copyright © 2011-2022 走看看