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.OJ's Binary Tree Serialization: The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.
Here's an example:
1 / \ 23 / 4 \ 5
The above binary tree is serialized as
"{1,2,3,#,#,4,#,#,5}"
. public boolean isValidBST(TreeNode root) {
// Start typing your Java solution below
// DO NOT write main() function
if (null == root) {
return true;
}
Stack stack = new Stack();
TreeNode pre = new TreeNode(Integer.MIN_VALUE);
TreeNode now = root;
while (!stack.isEmpty() || null != now) {
if (null == now) {
now = stack.pop();
if (pre.val >= now.val) {
return false;
}
pre = now;
now = now.right;
} else {
stack.push(now);
now = now.left;
}
}
return true;
}
推荐阅读
- 数据结构与算法|【算法】力扣第 266场周赛
- leetcode|今天开始记录自己的力扣之路
- Python|Python 每日一练 二分查找 搜索旋转排序数组 详解
- 【LeetCode】28.实现strstr() (KMP超详细讲解,sunday解法等五种方法,java实现)
- LeetCode-35-搜索插入位置-C语言
- leetcode python28.实现strStr()35. 搜索插入位置
- Leetcode Permutation I & II
- python|leetcode Longest Substring with At Most Two Distinct Characters 滑动窗口法
- LeetCode 28 Implement strStr() (C,C++,Java,Python)
- Python|Python Leetcode(665.非递减数列)