[LeetCode] Validate Binary Search Tree

vector<int> inorderTraversal(TreeNode *root) {
	vector<TreeNode*> pre_node;
	vector<int> val;
	if (root == NULL)
	{
		return val;
	}
	pre_node.push_back(root);

	while(!pre_node.empty())
	{
		TreeNode* cur_node = pre_node.back();
		TreeNode* left_leaf = NULL;
		TreeNode* right_leaf = NULL;
		if(cur_node != NULL)
		{
			left_leaf = cur_node->left;
			right_leaf = cur_node->right;
		}

		if(left_leaf != NULL)
		{
			pre_node.push_back(left_leaf);
		}
		else
		{
			val.push_back(cur_node->val);
			pre_node.pop_back();		

			if(right_leaf != NULL)
			{					                		
				pre_node.push_back(right_leaf);
			}
			else 
			{
				while(!pre_node.empty())
				{
					cur_node = pre_node.back(); 
					val.push_back(cur_node->val);
					pre_node.pop_back();
					if(cur_node->right != NULL)
					{
						pre_node.push_back(cur_node->right);
						break;
					}	                    
				}

			} 
		}
	}
	return val;
} 

bool isValidBST(TreeNode *root) {
	if (root == NULL)
	{
		return true;
	}
	vector<int> inorderVals = inorderTraversal(root);
	int lastVal = inorderVals[0];
	for (int i = 1; i < inorderVals.size(); i++)
	{
		if (inorderVals[i] <= lastVal)
		{
			return false;
		}
		lastVal = inorderVals[i];
	}
	return true;
}
先中序遍历,再判断遍历结果是否单调递增
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值