zoukankan      html  css  js  c++  java
  • leetCode(25):Validate Binary Search Tree 分类: leetCode 2015-06-23 13:00 154人阅读 评论(0) 收藏

    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.

    bool isValidBST(TreeNode* root)
    {//判断一个二叉树是否是平衡二叉树
    //首先平衡二叉树的任一结点的左孩子应该小于父亲结点
    //任一结点的右孩子应该大于父亲结点
    //任一结点的左子树的最大值应该小于它
    //任一结点的右子树的最小值应该大于它
    	if(NULL==root)
    		return true;
    	
    	TreeNode* behind=root->right;
    	while(behind && behind->left)
    		behind=behind->left;
    	TreeNode* ahead=root->left;
    	while(ahead && ahead->right)
    		ahead=ahead->right;
    	
    	//左右子树均不为空的情况
    	if(behind && ahead)
    	{
    		if(behind->val > root->val && ahead->val < root->val)
    		{
    			if(root->left->val < root->val && root->right->val > root->val)
    				return isValidBST(root->left) && isValidBST(root->right);
    			else
    				return false;
    		}
    		else
    			return false;
    	}
    	
    	//右子树不为空的情况
    	if(behind)
    	{
    		if(behind->val > root->val && root->right->val > root->val)
    			return isValidBST(root->right);
    		else
    			return false;
    	}
    	
    	//左子树不为空的情况
    	if(ahead)
    	{
    		if(ahead->val < root->val && root->left->val < root->val)
    			return isValidBST(root->left);
    		else
    			return false;
    	}
    	
    	//左右子树均为空的情况
    	return true;
    }


  • 相关阅读:
    PHP中过滤数组中的元素
    cookie中文乱码解决(php/js)
    Ubuntu系统tar克隆
    磁盘IO性能监控(Linux 和 Windows)
    远程桌面由于帐户限制你无法登录问题
    SAP中关于用户IP信息的获取
    选择界面制作按钮
    ALV常用参数详细描述
    销售订单、外向交货单、交货 bapi
    abap 常用表
  • 原文地址:https://www.cnblogs.com/zclzqbx/p/4687090.html
Copyright © 2011-2022 走看看