98. 验证二叉搜索树
题意:给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。
有效 二叉搜索树定义如下:
节点的左子树只包含 小于 当前节点的数。
节点的右子树只包含 大于 当前节点的数。
所有左子树和右子树自身必须也是二叉搜索树。
解题思路
解法1:
1.二叉搜索树的一个特性,是中序遍历的结果,一定为升序序列
2.根据上面的特性,遍历二叉树,判断list是否为升序
解题遇到的问题
无
后续需要总结学习的知识点
需要深入总结学习二叉搜索树的数据结构的特点、应用、搜索、插入、删除
##解法1
import java.util.LinkedList;
class Solution {
LinkedList<Integer> list = new LinkedList<Integer>();
public boolean isValidBST(TreeNode root) {
if (root == null) {
return false;
}
midTree(root);
boolean ans = true;
int pre = list.get(0);
for (int i = 1; i < list.size(); i++) {
if (pre >= list.get(i)) {
ans = false;
break;
} else {
pre = list.get(i);
}
}
return ans;
}
private void midTree(TreeNode root) {
if (root == null) {
return;
}
midTree(root.left);
list.add(root.val);
midTree(root.right);
}
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {
}
TreeNode(int val) {
this.val = val;
}
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}
}
网友评论