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


  • 相关阅读:
    配置Robot Framework 环境时如何查看wxPython是否成功安装
    win10系统同时安装python2.7和python3.6
    Python 统计不同url svn代码变更数
    JavaWeb之 Servlet执行过程 与 生命周期
    JavaWeb之Servlet:请求 与 响应
    webservice(基础)
    通过反射,给对象之间赋值
    用反射获取类中的属性值
    tree树形
    破解weblogic(数据库)密码
  • 原文地址:https://www.cnblogs.com/zclzqbx/p/4687090.html
Copyright © 2011-2022 走看看