LeetCode:Validate Binary Search Tree

本文介绍了一种通过中序遍历来验证二叉树是否为有效的二叉搜索树的方法,并提供了一个C++实现示例。

题目链接

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.

分析:根据BST中序遍历序列有序的性质判断,只要在中序遍历二叉树的代码基础上加上判断相邻元素关系的语句即可                                                                                                                                      本文地址

 1 /**
 2  * Definition for binary tree
 3  * struct TreeNode {
 4  * int val;
 5  * TreeNode *left;
 6  * TreeNode *right;
 7  * TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 8  * };
 9  */
10 class Solution {
11 public:
12     bool isValidBST(TreeNode *root) {
13         // IMPORTANT: Please reset any member data you declared, as
14         // the same Solution instance will be reused for each test case.
15         //注意题目要求是 less than和greater than;
16         stack<TreeNode*> S;
17         TreeNode *pre = NULL, *p = root;
18         while(p || S.empty() == false)
19         {
20             while(p)
21             {
22                 S.push(p);
23                 p = p->left;
24             }
25             if(S.empty() == false)
26             {
27                 p = S.top();
28                 S.pop();
29                 if(pre && p->val <= pre->val)return false;
30                 pre = p;
31                 p = p->right;
32             }
33         }
34         return true;
35     }
36 };

【版权声明】转载请注明出处:http://www.cnblogs.com/TenosDoIt/p/3448413.html

转载于:https://www.cnblogs.com/TenosDoIt/p/3448413.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值