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


  • 相关阅读:
    pandas read_excel 产生 Unnamed:0 列
    python 打印输出百分比符号%
    python 内存回收
    python 编码问题
    python 判断 txt 编码方式
    python 二维list取列
    python 两个list 求交集,并集,差集
    pandas Timestamp的用法
    Dataframe 取列名
    Dataframe 新增一列, apply 通用方法
  • 原文地址:https://www.cnblogs.com/zclzqbx/p/4687090.html
Copyright © 2011-2022 走看看