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 };
  • 相关阅读:
    Sum Root to Leaf Numbers 解答
    459. Repeated Substring Pattern
    71. Simplify Path
    89. Gray Code
    73. Set Matrix Zeroes
    297. Serialize and Deserialize Binary Tree
    449. Serialize and Deserialize BST
    451. Sort Characters By Frequency
    165. Compare Version Numbers
    447. Number of Boomerangs
  • 原文地址:https://www.cnblogs.com/wangxf2019/p/14594165.html
Copyright © 2011-2022 走看看