美文网首页
代码随想录训练营Day22 | 235.二叉搜索树的最近公共祖先

代码随想录训练营Day22 | 235.二叉搜索树的最近公共祖先

作者: 是小张啊啊 | 来源:发表于2023-11-01 14:50 被阅读0次
    235. 二叉搜索树的最近公共祖先
    思路
    • 如果当前节点值在 [p,q] 或者 [q,p] 之间,那么该节点即为 p、q的最近公共祖先。
    • 由于二叉搜索树具有排序特征,所以无需遍历整棵二叉树,可以在遍历过程中指定方向。
    var lowestCommonAncestor = function(root, p, q) {
        let left = null
        let right = null
        const travelTree = (root, p, q) => {
            if (!root) {
                return
            }
            // 搜索一边
            if (root.val > p.val && root.val > q.val) {
                left = travelTree(root.left, p, q)
                if (left !== null) {
                    return left
                }
            }
            if (root.val < p.val && root.val < q.val) {
                right = travelTree(root.right, p, q)
                if (right !== null) {
                    return right
                }
            }
            return root
        }
        return travelTree(root, p, q)
    };
    
    701. 二叉搜索树中的插入操作
    思路
    • 按照二叉树的规则遍历,遇到空节点插入新的节点即可
    var insertIntoBST = function(root, val) {
        const insert = (root, val) => {
            if (!root) {
                let node = new TreeNode(val)
                return node
            }
            if (root.val > val) {
                root.left = insert(root.left, val)
            }
            if (root.val < val) {
                root.right = insert(root.right, val)
            }
            return root
        }
        return insert(root, val)
    };
    

    相关文章

      网友评论

          本文标题:代码随想录训练营Day22 | 235.二叉搜索树的最近公共祖先

          本文链接:https://www.haomeiwen.com/subject/kgqwidtx.html