这篇page是针对leetcode上的701.二叉搜索树的插入操作所写的。小尼先简单的说明一下这道题的要求,给定一个二叉搜索树value,将值插入二叉搜索树,返回插入后二叉搜索树的根节点。
这个里面给出的说明是一个二叉搜索树,二叉搜索树就有它自己的规律,这里我们也是利用它的规律的这个条件进行操作。
小尼先给出思路,其实我们就是不断的将给出的val的值与我们的root的val的值做出比较,当我们判断出我们定义的方法里的val的值小于我们的root的val的值时,我们就在root的左子树去进行遍历,如果我们判断出val的值大于我们的root的val的值时,我们就可以去我们root的右子树去进行遍历,当我们遍历到null的时候,我们只需要将我们此时的val的值加入我们定义的一个新的节点,因为我们定义的方法是需要返回一个节点值,所以当我们遍历到null的时候,我们只需要return我们的定义的新的node即可,小尼接下来拉一下递归的代码:
class Solution {
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
while(true){
if(root.val > p.val && root.val > q.val){
root = root.left;
}
else if(root.val < p.val && root.val < q.val){
root = root.right;
}
else{
break;
}
}
return root;
}
}
小尼接下来也拉一下迭代法的代码:
class Solution {
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
while(true){
if(root.val > p.val && root.val > q.val){
root = root.left;
}
else if(root.val < p.val && root.val < q.val){
root = root.right;
}
else{
break;
}
}
return root;
}
}
这里迭代法的使用也就是一个循环的使用,在里面如果我们的root.val的值大于p.val的值,那么我们直接root = root.left,同理右边也是一样,我们这里通过一个while的判断使得我们的循环不断的进行