题目:leetcode700. 二叉搜索树中的搜索
描述:
给定二叉搜索树(BST)的根节点 root 和一个整数值 val。
你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。
思路
这道题无非就是遍历整棵树,然后查找跟val一致的节点值返回这个节点罢了。遍历方法可以有前中后序遍历和层次遍历。下面我给出递归的方法和迭代方法前序遍历两种方法的代码。
代码
递归法
public class Solution {
public TreeNode searchBST(TreeNode root, int val) {
if(root.val==val || root==null)
return root;
if(root.val>val)
return searchBST(root.left,val);
else
return searchBST(root.right,val);
}
}
迭代法前序遍历
import java.util.Deque;
import java.util.LinkedList;
public class Solution {
public TreeNode searchBST(TreeNode root, int val) {
if(root==null ||root.val==val)
return root;
Deque<TreeNode> deque=new LinkedList<>();
deque.push(root);
int length;
while(!deque.isEmpty())
{
length=deque.size();
TreeNode node;
while(length>0)
{
node=deque.pop();
if(node.val==val)
return node;
if(node.right!=null)
deque.push(node.right);
if(node.left!=null)
deque.push(node.left);
length--;
}
}
return null;
}
}