算法第八周解题报告
来源:互联网 发布:上海财经大学 知乎 编辑:程序博客网 时间:2024/06/06 20:38
98. Validate Binary Search Tree
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.
Example 1:
2 / \ 1 3Binary tree
[2,1,3]
, return true.Example 2:
1 / \ 2 3Binary tree
[1,2,3]
, return false.解题思路:本人的思路是通过后序遍历,对于每个非叶子结点:
1.判断他们的左右子树是否是搜索二叉树
2.取回左右子树的最大最小值,判断以这个节点为根的树是否是搜索二叉树。
算法代码如下:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: bool isValidBST(TreeNode* root) { int max, min; return travel(root, min, max); } bool travel(TreeNode* root, int & min, int & max){ if (root == NULL) { max = INT_MIN; min = INT_MAX; return true; } int leftMin, leftMax, rMin, rMax; bool isBSTree = travel(root -> left, leftMin, leftMax); if(isBSTree == false) return false; isBSTree = travel(root -> right, rMin, rMax); if(isBSTree == false)return false; if(root -> left != NULL && root -> val <= leftMax) return false; if(root -> right != NULL && root -> val >= rMin) return false; max = leftMax > rMax ? leftMax : rMax; max = root -> val > max ? root -> val : max; min = leftMin < rMin ? leftMin : rMin; min = root -> val < min ? root -> val : min; return true; }};
结果如下:
0 0
- 算法第八周解题报告
- 第八周程序设计课解题报告
- 算法第二周解题报告
- 算法第三周解题报告
- 算法第五周解题报告
- 算法第九周解题报告
- 算法第十五周解题报告
- 算法十七周解题报告
- C2第八次解题报告
- [解题报告]KMP算法
- 多校第八场解题报告
- 第八周实验报告
- 第八周实验报告
- 第八周实验报告
- 第八周实验报告
- 第八周作业报告
- 【算法解题报告】求众数
- LRU算法&&LeetCode解题报告
- 001.基础
- 【c语言】完成的老师布置的第一次作业
- 字典树模板
- sql基础、主键、游标、规则约束、存储过程、触发器
- 九.MUI
- 算法第八周解题报告
- PHPExcel导出(横向,垂直向)、导入
- git取消跟踪文件目录
- AOJ 852 SLF的消息记录 【map+string】
- 002.操作符的使用
- iOS的预编译头文件
- 十大基础实用算法补全——归并排序(MergeSort)
- 学习笔记 |AS 入门(一) 环境篇
- mybatis缓存。