题目一 235. 二叉搜索树的最近公共祖先
思路
二叉搜索树,找到第一个在p和q中间的数字,即最近公共祖先。
var lowestCommonAncestor = function(root, p, q) {
if (!root) {
return root;
}
if (root.val < p.val && root.val < q.val) {
const right = lowestCommonAncestor(root.right, p, q);
if (right) {
return right;
}
}
if (root.val > p.val && root.val > q.val) {
const left = lowestCommonAncestor(root.left, p, q);
if (left) {
return left;
}
}
return root
}
题目二 701. 二叉搜索树中的插入操作
思路
如何在遇到空节点构造之后赋值给父节点?是通过返回值的方式,左子树去查找的返回值就是root.left,反之亦然。
var insertIntoBST = function(root, val) {
if (!root) {
const newNode = new TreeNode(val);
return newNode;
}
if (root.val < val) {
root.right = insertIntoBST(root.right, val);
} else {
root.left = insertIntoBST(root.left, val);
}
return root;
};
题目三 450. 删除二叉搜索树中的节点
思路
有点复杂,后面再写