Python BST树搜索简易leetcode
给定二叉搜索树(BST)的根节点和一个值。您需要在BST中找到节点的值等于给定值的节点。返回以该节点为根的子树。如果这样的节点不存在,则应返回NULL 这是我的代码得到的:Python BST树搜索简易leetcode,python,binary-tree,binary-search-tree,Python,Binary Tree,Binary Search Tree,给定二叉搜索树(BST)的根节点和一个值。您需要在BST中找到节点的值等于给定值的节点。返回以该节点为根的子树。如果这样的节点不存在,则应返回NULL 这是我的代码得到的: class Solution: def searchBST(self, root: TreeNode, val: int) -> TreeNode: if root == None: return None elif root.val == va
class Solution:
def searchBST(self, root: TreeNode, val: int) -> TreeNode:
if root == None:
return None
elif root.val == val:
return root
elif root.val>val:
root = self.searchBST(root.left,val)
else:
root = self.searchBST(root.right,val)
似乎没有输出。
但如果更换线路
root = self.searchBST(root.left,val)
与
跟root一样,对吗
然后它就起作用了。
我不太擅长递归,但我们该怎么做呢
return self.searchBST(root.left,val)
searchBST(…)不返回树节点吗?因此我们不必将树节点放在变量根中吗?不,如前所述,您需要返回与val匹配的节点 为了做到这一点,如果找到值,必须返回节点的地址,如果找不到,则返回无 为了反向传播根地址或Null(如果未找到)的值,因此必须在每一步返回一些地址 如果您在递归方面有问题,请使用迭代遍历
root iterativeSearch(struct Node* root, int key)
{
// Traverse untill root reaches to dead end
while (root != NULL) {
// pass right subtree as new tree
if (key > root->data)
root = root->right;
// pass left subtree as new tree
else if (key < root->data)
root = root->left;
else
return root; // if the key is found return 1
}
return Null;
}
root迭代搜索(结构节点*root,int键)
{
//穿过,直到根部到达死端
while(root!=NULL){
//将右子树作为新树传递
如果(键>根->数据)
根=根->右;
//将左子树作为新树传递
else if(键data)
根=根->左;
其他的
return root;//如果找到键,则返回1
}
返回Null;
}
转到此处进行递归可视化:否如问题中所述,您需要返回与val匹配的节点 为了做到这一点,如果找到值,必须返回节点的地址,如果找不到,则返回无 为了反向传播根地址或Null(如果未找到)的值,因此必须在每一步返回一些地址 如果您在递归方面有问题,请使用迭代遍历
root iterativeSearch(struct Node* root, int key)
{
// Traverse untill root reaches to dead end
while (root != NULL) {
// pass right subtree as new tree
if (key > root->data)
root = root->right;
// pass left subtree as new tree
else if (key < root->data)
root = root->left;
else
return root; // if the key is found return 1
}
return Null;
}
root迭代搜索(结构节点*root,int键)
{
//穿过,直到根部到达死端
while(root!=NULL){
//将右子树作为新树传递
如果(键>根->数据)
根=根->右;
//将左子树作为新树传递
else if(键data)
根=根->左;
其他的
return root;//如果找到键,则返回1
}
返回Null;
}
转到这里进行递归可视化:您必须明确地告诉Python您希望函数返回什么。这就是使用
returnnone
和returnroot
行所做的
在左侧
和右侧
情况下,您只更改参数根
的局部值,而不更改函数范围之外的任何内容。
无显式返回
与无返回
相同
将两个
root=
替换为return
确实可以完成这项工作。您必须明确地告诉Python您希望函数返回什么。这就是使用returnnone
和returnroot
行所做的
在左侧
和右侧
情况下,您只更改参数根
的局部值,而不更改函数范围之外的任何内容。
无显式返回
与无返回
相同
将两个root=
替换为return
确实可以完成这项工作