博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Validate Binary Search Tree(DFS)
阅读量:6249 次
发布时间:2019-06-22

本文共 1290 字,大约阅读时间需要 4 分钟。

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.

描述:即判断一棵树是不是二叉搜索树(左孩子小于父节点值,右孩子大于父亲节点值,且其左子树和右子树也同时满足BST)

思路:双层递归。

第一层,递归每一个节点是否满足,左边所有节点都小于它,右边所有节点都大于它。

第二层,如何来实现判断,左边所有节点都小于根,右边所有节点大于根。(每个节点都要作为根)。

特殊:root为空时,return true

代码:

class Solution {public:    bool isLeftValid(TreeNode *root,int val){//某个根的左树,val该根的值        if(root==NULL)             return true;        return root->val
left,val)&&isLeftValid(root->right,val); } bool isRightValid(TreeNode *root,int val){//某个根的右树,val该根的值 if(root==NULL) return true; return root->val>val&&isRightValid(root->left,val)&&isRightValid(root->right,val); } bool isValidBST(TreeNode *root) { if(root==NULL) return true; bool flag=isLeftValid(root->left,root->val)&&isRightValid(root->right,root->val); if(!flag) return false; return isValidBST(root->left)&&isValidBST(root->right); }};

 

转载于:https://www.cnblogs.com/fightformylife/p/4085286.html

你可能感兴趣的文章
《深入理解C++11:C++ 11新特性解析与应用》——2.8 非静态成员的sizeof
查看>>
心脏起搏器中存在巨大安全隐患 或威胁患者生命
查看>>
20 万中国产 WiFi 摄像头曝漏洞,后门大开任由黑客进入
查看>>
《HTML 5+CSS 3入门经典》——1.2 HTML 5 的优势
查看>>
中国通信和IT设备产业:在变革中寻求新突破
查看>>
独家丨2017全国深度学习技术应用大会回顾:传统的AI研究方法,在DL时代该如何变革?...
查看>>
《高性能Linux服务器构建实战》——2.3节配置Varnish
查看>>
创业大学|什么样的BP能让投资人一见钟情
查看>>
入侵CIA和FBI的黑客:可能是一个15岁少年
查看>>
光伏竞价上网 项目盈利将逐步回归均值
查看>>
x86服务器的王者之战 —— 戴尔PowerEdge服务器在全球及亚太市场排名第一
查看>>
《高性能Linux服务器构建实战》——1.6节Nginx性能优化技巧
查看>>
杨永智:我有一些区块链应用的经验可以传授 | 硬创公开课
查看>>
中国人民大学助力政府大数据预警预测平台
查看>>
直接法硅片助力光伏平价上网
查看>>
纵览各国关键信息基础设施配套网络安全法规建设
查看>>
阿里云增速连超亚马逊 云计算三巨头格局将成
查看>>
“想哭”来袭 信息安全产业会“笑”吗
查看>>
“互联网+大数据”成为审讯突破口
查看>>
联发科4G方案渐趋成熟 2016市场或将迎来大反转
查看>>