6.16二叉搜索树中的搜索(LC700-E)

6.16二叉搜索树中的搜索(LC700-E)_第1张图片

算法:

二叉搜索树自带顺序,所以不用强调前、中、后序。

调试过程:

6.16二叉搜索树中的搜索(LC700-E)_第2张图片

原因:初始化变量result时,没有给result赋值

正确代码:

/**
 * Definition for a binary tree node.
 * 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;
 *     }
 * }
 */
class Solution {
    public TreeNode searchBST(TreeNode root, int val) {
        if (root == null || root.val == val) return root;
        TreeNode result = null;
        if (val < root.val) result = searchBST(root.left, val);
        if (val > root.val) result = searchBST(root.right, val);
        return result;

    }
}

时间空间复杂度:

时间复杂度

给定解决方案中 `searchBST` 函数的时间复杂度可以表示为 O(ℎ),其中 ℎ 是二叉搜索树(BST)的高度。在最坏情况下,算法将从根节点遍历到叶子节点,因此时间复杂度为 O(ℎ)。

空间复杂度

提供的解决方案的空间复杂度也是 O(ℎ),其中 ℎ 是二叉搜索树的高度。这个空间复杂度是由递归调用 `searchBST` 时使用的递归栈引起的。

需要注意的是,在最坏情况下,当树是倾斜的(实际上是一个链表)时,树的高度可能等于树中的节点数,导致时间和空间复杂度为O(n),其中 n 是树中的节点数。

你可能感兴趣的:(#,6.二叉树,算法,leetcode,职场和发展)