当前位置:网站首页>LeetCode:236. The nearest common ancestor of binary tree
LeetCode:236. The nearest common ancestor of binary tree
2022-07-06 08:51:00 【Bertil】
Given a binary tree , Find the nearest common ancestor of the two specified nodes in the tree .
In Baidu Encyclopedia, the most recent definition of public ancestor is :“ For a tree T Two nodes of p、q, The nearest common ancestor is represented as a node x, Satisfy x yes p、q Our ancestors and x As deep as possible ( A node can also be its own ancestor ).”
Example 1:
Input :root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1
Output :3
explain : node 5 And nodes 1 The most recent public ancestor of is the node 3 .
Example 2:
Input :root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 4
Output :5
explain : node 5 And nodes 4 The most recent public ancestor of is the node 5 . Because by definition, the nearest common ancestor node can be the node itself .
Example 3:
Input :root = [1,2], p = 1, q = 2
Output :1
Tips :
- The number of nodes in the tree is in the range [2, 10^5] Inside .
- -10^9 <= Node.val <= 10^9
- all Node.val Different from each other .
- p != q
- p and q All exist in a given binary tree .
Their thinking
1. First use recursion :root yes null perhaps root be equal to p or q, explain root yes p,q The common ancestor of ( Recursion ends ), So as to recurse the left and right subtrees
2. Then judge after the recursion of the left and right subtrees
- If the left and right subtree recursive functions do not return empty , be root Namely p,q The common ancestor of
- If the value returned by the left subtree recursive function is null , be p,q All in the right subtree , Go straight back to right that will do
- If the value returned by the right subtree recursive function is null , be p,q It's all in zuozhu , Go straight back to left that will do
Code
/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } */
/** * @param {TreeNode} root * @param {TreeNode} p * @param {TreeNode} q * @return {TreeNode} */
var lowestCommonAncestor = function(root, p, q) {
const travelTree = function(root, p, q) {
// Recursive termination condition
if(root === null || root === p|| root === q) {
return root;
}
let left = travelTree(root.left, p, q);
let right = travelTree(root.right, p, q);
// If you can find both the left and right subtrees of a node p and q, This indicates that this node is a common ancestor
if(left !== null && right !== null) {
return root;
}
if(left === null) {
return right;
}
return left;
}
return travelTree(root, p, q);
};
边栏推荐
- Excellent software testers have these abilities
- 软件压力测试常见流程有哪些?专业出具软件测试报告公司分享
- Niuke winter vacation training 6 maze 2
- 生成器参数传入参数
- After PCD is converted to ply, it cannot be opened in meshlab, prompting error details: ignored EOF
- LeetCode:剑指 Offer 03. 数组中重复的数字
- TCP/IP协议
- Purpose of computer F1-F12
- The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
- C語言雙指針——經典題型
猜你喜欢
Sublime text using ctrl+b to run another program without closing other runs
opencv+dlib实现给蒙娜丽莎“配”眼镜
Export IEEE document format using latex
[sword finger offer] serialized binary tree
[MySQL] multi table query
visdom可视化实现与检查介绍
Using C language to complete a simple calculator (function pointer array and callback function)
Problems encountered in connecting the database of the project and their solutions
JVM quick start
【剑指offer】序列化二叉树
随机推荐
egg. JS project deployment online server
The mysqlbinlog command uses
【剑指offer】序列化二叉树
Unsupported operation exception
项目连接数据库遇到的问题及解决
Swagger setting field required is mandatory
After reading the programmer's story, I can't help covering my chest...
sublime text的编写程序时的Tab和空格缩进问题
LeetCode:836. 矩形重叠
Tcp/ip protocol
个人电脑好用必备软件(使用过)
UML diagram memory skills
【嵌入式】使用JLINK RTT打印log
软件压力测试常见流程有哪些?专业出具软件测试报告公司分享
【ROS】usb_ Cam camera calibration
Revit secondary development Hof method calls transaction
swagger设置字段required必填
The network model established by torch is displayed by torch viz
[today in history] February 13: the father of transistors was born The 20th anniversary of net; Agile software development manifesto was born
电脑清理,删除的系统文件