Leetcode700 二叉搜索树中的搜索

题意理解:

        首先明确二叉搜索树的定义:

                根节点的值大于左子树所有节点值,小于右子树所有节点值。

        二叉搜索树有其自己的顺序,不需要刻意强调遍历顺序。

解题方法:

        递归和遍历都可以用。因为是在树里按照一定的规律找一个节点,所以只是走一条路径。两个方法都很简单。

1.递归 

   public TreeNode searchBST2(TreeNode root, int val) {
        //如果根节点为空则返回空
        //如果根节点值与目标值相等,返回根节点
       if(root==null||root.val==val) return root;
       TreeNode result=null;
        //根节点值大于目标值,从左边找
       if(root.val>val) result=searchBST2(root.left,val);
        //根节点值小于目标值,从右边找
       if(root.val

2.递归

仅有一条路径去找目标值,所以其实不需要使用栈存储节点状态

public TreeNode searchBST(TreeNode root, int val) {
        while (root!=null){
            //控制查找方向
            if(root.val>val){//左找
                root=root.left;
            }else if(root.val

3.分析

时间复杂度:

        递归:O(1)

        迭代:O(1)

空间复杂度:

        递归:O(1)

        迭代:O(1)

你可能感兴趣的:(刷题训练营,数据结构,java)