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。

  • 相关阅读:
    windows live writer 测试
    2011518资金净流入
    做人真善美,做事拖后腿
    今日盘面分析2011517
    近期国际版概念(5月19日益盟消息回顾)
    linux 系统应用程序桌面图标显示及进程自启动
    C#中发送邮件(以ASP.NET为例)
    Jquery使用$.Post方法,本地可以,服务器错误的处理方法...
    Silverlight中使用动画的技巧
    Silverlight之Easing
  • 原文地址:https://www.cnblogs.com/fenshen371/p/5162043.html
Copyright © 2011-2022 走看看