题解 | #判断是不是二叉搜索树#

判断是不是二叉搜索树

https://www.nowcoder.com/practice/a69242b39baf45dea217815c7dedb52b

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param root TreeNode类 
     * @return bool布尔型
     */

    
    public boolean isValidBST (TreeNode root) {
        // write code here
        //所有左边的节点都小于右边,所有右边的节点都大于左边
       //即进行中序遍历是递增的,由于后续要得到元素比较大小所以只能使用数组
     List<Integer> list = new ArrayList<>();
     inorder(list,root);

       for(int i=1;i<list.size();i++){
        if(list.get(i-1)>list.get(i)){
            return false;
        }
       }
        return true;
    }

    //此处不能直接返回列表,不然走到某一层已经为空时,
    // 返回列表,那么会继续向下走就会有空指针异常
    // 只能将列表一参数传递,给列表赋值。

    public void inorder(List<Integer> list, TreeNode root){
        //遇到空节点则返回
        if(root == null)
            return;
        //先去左子树
        inorder(list, root.left);
        //再访问根节点
        list.add(root.val);
        //最后去右子树
        inorder(list, root.right);
    }
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务