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;
    }


  • 相关阅读:
    威尔逊定理  知识点
    费马小定理及推论 知识点
    勾股定理和勾股数
    hdu6441 Find Integer (费马大定理)
    费马大定理
    莫队算法 [国家集训队]小Z的袜子
    R49 A-D D图有向有环图
    #505 1&2 A-C 后面未完成
    stack 的一些用法
    bzoj 2844 albus就是要第一个出场 异或和出现次数 线性基
  • 原文地址:https://www.cnblogs.com/zclzqbx/p/4687090.html
Copyright © 2011-2022 走看看