题目链接:LeetCode 700. 二叉搜索树中的搜索
题意:
给定二叉搜索树(BST)的根节点 root 和一个整数值 val。
你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。
解题思路:
递归法
递归遍历二叉树,寻找与val相等的节点,找到即返回该节点
递归代码:
func searchBST(root *TreeNode, val int) *TreeNode {
if root == nil {
return nil
}
if root.Val == val{
return root
}
var res *TreeNode
if root.Val > val {
res = searchBST(root.Left,val)
}else{
res = searchBST(root.Right,val)
}
return res
}
迭代法
因为本题是二叉搜索树,它的中序遍历是有序的,因此可以根据当前节点的值与目标值val的大小关系,选择往左子树或者右子树走
迭代法代码:
func searchBST(root *TreeNode, val int) *TreeNode {
if root == nil {
return nil
}
for root != nil {
if root.Val == val{
return root
}
if root.Val > val{
root = root.Left
}else{
root = root.Right
}
}
return root
}
标签:return,nil,val,root,700,搜索,TreeNode,树中,节点
From: https://www.cnblogs.com/lxing-go/p/17440940.html