算法训练营day19,二叉树8-1

type TreeNode struct {

Val int

Left *TreeNode

Right *TreeNode

}

235. 二叉搜索树的最近公共祖先

//本题比昨天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

}

}

//701. 二叉搜索树中的插入操作

// 因为二叉搜索树是有序的可以按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

}

相关推荐
你真是饿了1 小时前
算法专题二:滑动窗口
算法
ccLianLian1 小时前
数论·约数
数据结构·算法
会编程的土豆1 小时前
【数据结构与算法】最短路径---Dijkstra 算法
数据结构·c++·算法
2401_879693871 小时前
C++中的观察者模式实战
开发语言·c++·算法
炽烈小老头1 小时前
【 每天学习一点算法 2026/03/24】寻找峰值
学习·算法
fff9811182 小时前
C++与Qt图形开发
开发语言·c++·算法
计算机安禾2 小时前
【数据结构与算法】第3篇:C语言核心机制回顾(二):动态内存管理与typedef
c语言·开发语言·数据结构·c++·算法·链表·visual studio
njidf3 小时前
C++中的访问者模式
开发语言·c++·算法
C_Si沉思3 小时前
C++中的工厂模式变体
开发语言·c++·算法
C羊驼3 小时前
C语言学习笔记(十五):预处理
c语言·经验分享·笔记·学习·算法