• My Forty-Third Page - 二叉搜索树中的插入操作 - By Nicolas


    这篇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的判断使得我们的循环不断的进行

  • 相关阅读:
    ArrayLis集合扩容机制
    基于微信小程序的车位预定系统设计与实现(源码+lw+部署文档+讲解等)
    2018-04《信息资源管理 02378》真卷,圈定章节考点+统计真题分布
    VulnHub DC-7
    【Redis】深入探索 Redis 的数据类型 —— 字符串 string
    linux系统中安装redis到指定目录
    Sping-AOP切面相关操作
    LeetCode_54_螺旋矩阵
    Linux基本指令(中)——“Linux”
    C++调用C#的动态库dll
  • 原文地址:https://blog.csdn.net/weixin_51658729/article/details/127659334