type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
//本题比昨天236二叉树的最近公共祖先 要容易一些,因为二叉搜索树是有序的
func lowestCommonAncestor(root, p, q *TreeNode) *TreeNode {
if root == nil {
return root
}
//如果p,q比root小,说明在左子树,向左移动
if root.Val > p.Val && root.Val > q.Val {
return lowestCommonAncestor(root.Left, p, q)
//如果p,q比root大,说明在右子树,向右移动
} else if root.Val < p.Val && root.Val < q.Val {
return lowestCommonAncestor(root.Right, p, q)
} else {
return root
}
}
// 因为二叉搜索树是有序的可以按val值大小进行移动
func insertIntoBST(root *TreeNode, val int) *TreeNode {
cur := &TreeNode{Val: val}
if root == nil {
return cur
}
// val比root值小向左移动
if root.Val > val {
root.Left = insertIntoBST(root.Left, val)
// val比root值大向右移动
} else if root.Val < val {
root.Right = insertIntoBST(root.Right, val)
}
return root
}