一、描述:
二、思路:
二叉排序树(BST),中序遍历的结果一定是非递减序列(来自百度百科);
本题中对于BST的定义是要么大于,要么小与,即遍历结果只能是递增序列,故可以通过判断中序遍历的结果序列是否是递增序列,来判断是否为合法BST;
另一种方法是使用递归;
三、代码:
1、非递归,通过中序遍历结果判断:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { private List<Integer> list = new ArrayList<Integer>(); public boolean isValidBST(TreeNode root) { inorderTraversal(root); int size = list.size(); if(size==0 || size==1){ return true; } for(int i=0;i<size-1;i++){ if((list.get(i)) >= (list.get(i+1))){ return false; } } return true; } //中序遍历 public void inorderTraversal(TreeNode root){ if(root==null){ return; }else{ inorderTraversal(root.left); list.add(root.val); inorderTraversal(root.right); } } }
2、递归:明天再写
时间: 2024-10-11 17:49:42