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

}

相关推荐
好记性+烂笔头13 分钟前
hot100-438. 找到字符串中所有字母异位词
算法
六点半88826 分钟前
【C/C++】速通涉及string类的经典编程题
c语言·开发语言·c++·算法
学地理的小胖砸2 小时前
【高分系列卫星简介】
开发语言·数码相机·算法·遥感·地理信息
yanyanwenmeng2 小时前
matlab基础
开发语言·算法·matlab
##晴天小猪2 小时前
ByteTrack多目标跟踪流程图
人工智能·算法·目标检测·机器学习·目标跟踪
白帽黑客cst2 小时前
网络安全(黑客技术) 最新三个月学习计划
网络·数据结构·windows·学习·安全·web安全·网络安全
ly-how2 小时前
leetcode练习 二叉树的层序遍历
算法·leetcode
疑惑的杰瑞3 小时前
[数据结构]算法复杂度详解
c语言·数据结构·算法
大油头儿3 小时前
排序算法-选择排序
数据结构·算法·排序算法
搞点夜点心3 小时前
算法课习题汇总(2)
算法