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 };
  • 相关阅读:
    求正方形的面积和周长
    面向对象练习——校园管理系统
    python--面向对象(最全讲解)
    git删除远程仓库的文件或目录
    git设置忽略文件和目录
    计算器
    织梦标签整理
    比较恶心的360老年版浏览器 文件导出下载
    织梦文章列表样式多元化实现
    php函数整理
  • 原文地址:https://www.cnblogs.com/wangxf2019/p/14594165.html
Copyright © 2011-2022 走看看