【二叉查找树】03验证是否为二叉查找树【Validate Binary Search Tree】
本质上是递归遍历左右后在与根节点做判断,本质上是后序遍历
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
给你一个二叉树,判断他是否是个有效的二叉查找树(BST)。
假定一个BST树按照下面的内容定义:
- 左子树的节点的值都小于父节点。
- 右子树的节点的值都大于父节点。
- 左子树和右子树都得是合法的而二叉查找树。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
test.cpp:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | #include <iostream> #include <cstdio> #include <stack> #include <vector> #include "BinaryTree.h" using namespace std; /** bool islargethanroot(TreeNode *right, int val) bool isValidBST(TreeNode *root) // 树中结点含有分叉, ConnectTreeNodes(pNodeA1, pNodeA2, pNodeA3); bool ans = isValidBST(pNodeA1); if (ans == true) DestroyTree(pNodeA1); | 
结果输出:
Valid BST
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #ifndef _BINARY_TREE_H_ #define _BINARY_TREE_H_ struct TreeNode TreeNode *CreateBinaryTreeNode(int value); #endif /*_BINARY_TREE_H_*/ | 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | #include <iostream> #include <cstdio> #include "BinaryTree.h" using namespace std; /** //创建结点 return pNode; //连接结点 //打印节点内容以及左右子结点内容 if(pNode->left != NULL) if(pNode->right != NULL) printf("\n"); //前序遍历递归方法打印结点内容 if(pRoot != NULL) if(pRoot->right != NULL) void DestroyTree(TreeNode *pRoot) delete pRoot; DestroyTree(pLeft); | 
【二叉查找树】03验证是否为二叉查找树【Validate Binary Search Tree】的更多相关文章
- [Swift]LeetCode98. 验证二叉搜索树 | Validate Binary Search Tree
		Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as ... 
- [CareerCup] 4.5 Validate Binary Search Tree 验证二叉搜索树
		4.5 Implement a function to check if a binary tree is a binary search tree. LeetCode上的原题,请参见我之前的博客Va ... 
- Leetcode 笔记 98 - Validate Binary Search Tree
		题目链接:Validate Binary Search Tree | LeetCode OJ Given a binary tree, determine if it is a valid binar ... 
- leetcode dfs Validate Binary Search Tree
		Validate Binary Search Tree Total Accepted: 23828 Total Submissions: 91943My Submissions Given a bin ... 
- Validate Binary Search Tree
		Validate Binary Search Tree Given a binary tree, determine if it is a valid binary search tree (BST) ... 
- 【leetcode】Validate Binary Search Tree
		Validate Binary Search Tree Given a binary tree, determine if it is a valid binary search tree (BST) ... 
- LintCode Validate Binary Search Tree
		Validate Binary Search Tree Given a binary tree, determine if it is a valid binary search tree (BST) ... 
- 39. Recover Binary Search Tree  &&  Validate Binary Search Tree
		Recover Binary Search Tree OJ: https://oj.leetcode.com/problems/recover-binary-search-tree/ Two elem ... 
- 【LeetCode练习题】Validate Binary Search Tree
		Validate Binary Search Tree Given a binary tree, determine if it is a valid binary search tree (BST) ... 
- LeetCode: Validate Binary Search Tree  解题报告
		Validate Binary Search Tree Given a binary tree, determine if it is a valid binary search tree (BST) ... 
随机推荐
- 【Atheros】minstrel速率调整算法源码走读
			先说几个辅助的宏,因为内核不支持浮点运算,当然还有实现需要,minstrel对很多浮点值做了缩放: /* scaled fraction values */ #define MINSTREL_SCAL ... 
- 那不是Bug,是新需求
			原文作者:Jeff Atwood 自从我干上软件开发这一行.而且使用了Bug跟踪系统.我们在每个项目里都会纠结一个主要的问题:你怎么能把Bug与功能需求区分开来? 当然,假设程序崩溃了,这毫无疑问是B ... 
- math课本复习
			第七章 微分方程 第一节 微分方程的基本概念 未知函数.未知函数的倒数与自变量之间的关系的方程,叫做微分方程. 第二节 可分离变量的微分方程 第三节 齐次方程 第四节 一阶线性微分方程 总结:任 ... 
- 使用UIImageView展现来自网络的图片
			本文转载至 http://www.cnblogs.com/chivas/archive/2012/05/21/2512324.html UIImageView:可以通过UIImage加载图片赋给UII ... 
- 【BZOJ2006】[NOI2010]超级钢琴 ST表+堆
			[BZOJ2006][NOI2010]超级钢琴 Description 小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的音乐. 这架超级钢琴可以 ... 
- ubuntu问题:  同时只能有一个软件管理工具在运行
			或者是: 只能同时运行一个更新管理器 打开终端输入命令:sudo dpkg –configure -a 运行,系统问题就解决了 
- python __name__及__main()__的妙处
			#hello.py def sayHello(): str="hello" print(str); if __name__ == "__main__": pri ... 
- js格式化货币金额
			/* 格式化金额, s : 金额 n : 保留位数 */ function formatMoney(s, n) { n = n > 0 && n <= 20 ? n : 2 ... 
- (转)Web Service和WCF的到底有什么区别
			[1]Web Service:严格来说是行业标准,也就是Web Service 规范,也称作WS-*规范,既不是框架,也不是技术. 它有一套完成的规范体系标准,而且在持续不断的更新完善中. 它使用XM ... 
- activiti基础--1------------------------生成.bpmn和.png以及部署流程定义
			helloworld.dbmn <?xml version="1.0" encoding="UTF-8"?> <definitions xml ... 
