[LeetCode-12]Validate Binary Search Tree
来源:互联网 发布:mac给iphone充电 编辑:程序博客网 时间:2024/06/05 16:16
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.
confused what "{1,#,2,3}"
means? > read more on how binary tree is serialized on OJ.
Analysis:
The strigh forwared idea is using the Tree Traversal. Consider the Binary Search Tree with InOrder traversal. The result should be a sequence in ascending order, otherwise, it's not a binary search tree.
ArrayList<Integer> result;public boolean isValidBST(TreeNode root) {result = new ArrayList<Integer>();if(root == null) return true;inorder(root);for(int i=0;i<result.size()-1;i++){if(result.get(i)>=result.get(i+1))return false;}return true; }public void inorder(TreeNode root){if(root!=null){inorder(root.left);result.add(root.val);inorder(root.right);}}
the other solution, we could set the bounary min and max value for each sub-tree,
the root has no restriction
for every level tree, the left child max value < root, the right child min value > root
public boolean isValidBST(TreeNode root) {return judgeBST(root, Integer.MAX_VALUE, Integer.MIN_VALUE); }public boolean judgeBST(TreeNode root, int max, int min){if(root == null) return true;if(root.val<max && root.val>min && judgeBST(root.left, root.val, min)&& judgeBST(root.right, max, root.val)){return true;}else {return false;}}
c++
bool judgeValidBST(TreeNode *root, int nMin, int nMax){ if(root == NULL) return true; if(root->val <=nMax && root->val >=nMin && judgeValidBST(root->left,nMin,root->val) && judgeValidBST(root->right,root->val,nMax)) return true; else return false;}bool isValidBST(TreeNode *root) { return judgeValidBST(root,INT_MIN, INT_MAX);}
0 0
- [LeetCode-12]Validate Binary Search Tree
- LeetCode: Validate Binary Search Tree
- [Leetcode] Validate Binary Search Tree
- LeetCode : Validate Binary Search Tree
- [LeetCode] Validate Binary Search Tree
- [LeetCode] Validate binary search tree
- [LeetCode]Validate Binary Search Tree
- [Leetcode]Validate Binary Search Tree
- [leetcode]Validate Binary Search Tree
- LeetCode-Validate Binary Search Tree
- [leetcode] Validate Binary Search Tree
- LeetCode - Validate Binary Search Tree
- [LeetCode] Validate Binary Search Tree
- Leetcode Validate Binary Search Tree
- LeetCode | Validate Binary Search Tree
- LeetCode - Validate Binary Search Tree
- Leetcode: Validate Binary Search Tree
- 【Leetcode】Validate Binary Search Tree
- 2014世界杯 中国足球手游的灾难年
- 中国手游IP年 开发者的机遇和挑战
- scrollTo、scrollBy、getScrollX、getScrollY
- Android UI自适应屏幕大小
- Java自学视频整理
- [LeetCode-12]Validate Binary Search Tree
- 进程的内核栈
- ultraedit 正则表达式
- [LeetCode-15]Binary Tree Zigzag Level Order Traversal
- MOS管的导通特性
- Pomelo在windows下环境搭建遇到的问题
- html标签中id和name的区别
- 《C++ Primer第四版》学习笔记(三)变量和基本类型 之 基本内置类型
- Sneak Preview: The 14 Leading Java Tools & Technologies for 2014