zoukankan      html  css  js  c++  java
  • 微软面试题: LeetCode 98. 验证二叉搜索树 出现次数:3

    题目描述:

       验证一颗给定的二叉树是否为 二叉搜索树;

    思路:

      对二叉树中序遍历,若遍历的序列是单调递增的,则是二叉搜索树;若遍历的每个节点都比前一个

    节点大,则序列是单调递增;可以使用一个变量 long front 保存 前一个遍历的节点的值,front 在遍历之前

    初始化为 LONG_MIN, 不能为 INT_MIN ,是因为测试用例中 二叉树的节点值可能为 INT_MIN 。

    代码:

     1 class Solution {
     2 public:
     3     bool isValidBST(TreeNode* root) {
     4         // 对 root中序遍历,遍历到二叉树的所有节点都比前一个节点大
     5         //返回true,反之 false;
     6         front = LONG_MIN; //这里用 LONG_MIN 是因为 树中的节点值也可能是 INT_MIN
     7         return isValidBSTHelper(root);
     8     }
     9     
    10     bool isValidBSTHelper(TreeNode* root)
    11     {
    12         if (root == nullptr)
    13         {
    14            return true;
    15         }
    16          bool is_left_valid = isValidBSTHelper(root->left);
    17          if(root->val <= front)
    18          {
    19              return false;
    20          }
    21          front = root->val;
    22          bool is_right_valid = isValidBSTHelper(root->right);
    23          return is_left_valid && is_right_valid;
    24     }
    25 private:
    26     //  int front;
    27     long front;
    28 };
  • 相关阅读:
    new
    如何在win7上面安装python的包
    进程
    网络编程模块的使用
    面向对象基础与实例
    类与对象的属性与使用方法
    基础面向对象与面向过程
    RE模块垃圾回收机制
    常用函数模块
    thinkphp6 find_in_set使用实例
  • 原文地址:https://www.cnblogs.com/wangxf2019/p/14594165.html
Copyright © 2011-2022 走看看