算法训练营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

}

相关推荐
Frostnova丶7 小时前
【算法笔记】数学知识
笔记·算法
吴可可1238 小时前
AutoCAD 2016与2014二次开发关键差异
算法
雨白9 小时前
哈希:以时间换空间的算法实战
算法
啦啦啦啦啦zzzz10 小时前
数据结构:红黑树理论
数据结构·c++·红黑树
San813_LDD11 小时前
[数据结构]LeetCode学习
数据结构·算法·图论
x1387028595711 小时前
c语言排雷游戏(基础版9*9)
c语言·算法·游戏
sheeta199812 小时前
LeetCode 每日一题笔记 日期:2026.06.06 题目:2196. 根据描述创建二叉树
笔记·算法·leetcode
小欣加油12 小时前
leetcode994 腐烂的橘子
数据结构·c++·算法·leetcode·bfs
QuZero13 小时前
Guava Cache Deep Dive
java·后端·算法·guava