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


  • 相关阅读:
    Android官方命令深入分析之bmgr
    Android官方命令深入分析之AVD Manager
    Android 官方命令深入分析之android
    token的设置与获取
    SpringBoot使用Redis共享用户session信息
    thymeleaf资源加载问题(从Controller跳转)
    ajax传递数组,后台更新
    BootStrap表单验证用户名重复
    hadoop3.x.x错误解决
    Hadoop安装
  • 原文地址:https://www.cnblogs.com/zclzqbx/p/4687090.html
Copyright © 2011-2022 走看看