算法:
二叉搜索树自带顺序,所以不用强调前、中、后序。
调试过程:
原因:初始化变量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 是树中的节点数。