LeetCode 98. 验证二叉搜索树
Posted 莴苣&
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 98. 验证二叉搜索树相关的知识,希望对你有一定的参考价值。
98. 验证二叉搜索树
难度中等
给定一个二叉树,判断其是否是一个有效的二叉搜索树。
假设一个二叉搜索树具有如下特征:
- 节点的左子树只包含小于当前节点的数。
- 节点的右子树只包含大于当前节点的数。
- 所有左子树和右子树自身必须也是二叉搜索树。
示例 1:
输入: 2 / 1 3 输出: true
示例 2:
输入: 5 / 1 4 / 3 6 输出: false 解释: 输入为: [5,1,4,null,null,3,6]。 根节点的值为 5 ,但是其右子节点值为 4 。
思路:根据题意,再结合中序遍历,可以发现,中序遍历该树,得到的数值如果是递增的,则是二叉搜索树,所以可以利用数组,将中序遍历的结果保存,然后进行比较,得出结果。代码如下:
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * struct TreeNode *left; 6 * struct TreeNode *right; 7 * }; 8 */ 9 10 void inorder(struct TreeNode* root,int *a,int *cnt) 11 { 12 if(root==NULL){ 13 return ; 14 } 15 inorder(root->left,a,cnt); 16 a[(*cnt)++]=root->val; 17 inorder(root->right,a,cnt); 18 } 19 20 bool isValidBST(struct TreeNode* root){ 21 int *a,i,cnt=0; 22 a=(int*)malloc(10000*sizeof(int)); 23 inorder(root,a,&cnt); 24 for(i=0;i<cnt-1;i++){ 25 if(a[i]>=a[i+1]){ 26 return false; 27 } 28 } 29 return true; 30 }
以上是关于LeetCode 98. 验证二叉搜索树的主要内容,如果未能解决你的问题,请参考以下文章