-
Notifications
You must be signed in to change notification settings - Fork 53
Expand file tree
/
Copy pathLeetCode_236_1.java
More file actions
35 lines (32 loc) · 1.36 KB
/
LeetCode_236_1.java
File metadata and controls
35 lines (32 loc) · 1.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package week02;
/**
* @创建人 luoxiang
* @创建时间 2019/6/14 14:49
* @描述 LeetCode : 236. 二叉树的最近公共祖先 https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree/
*/
public class LowestCommonAncestorBinaryTree236 {
public static void main(String[] args) {
TreeNode node = new TreeNode(3);
node.left = new TreeNode(5);
node.right = new TreeNode(1);
node.left.left = new TreeNode(6);
node.left.right = new TreeNode(2);
node.left.right.left = new TreeNode(7);
node.left.right.right = new TreeNode(4);
node.right.left = new TreeNode(0);
node.right.right = new TreeNode(8);
System.out.println(new LowestCommonAncestorBinaryTree236().lowestCommonAncestor(node, node.right, node.left).toString());
}
/**
* Method 1 : 递归 ,从左右子树中分别查找
* 时间复杂度 : O(N)
* 空间复杂度 : O(N)
*/
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
if (root == null || root == p || root == q) return root;
TreeNode left = lowestCommonAncestor(root.left, p, q);
TreeNode right = lowestCommonAncestor(root.right, p, q);
if (left != null && right != null) return root;
return left != null ? left : right;
}
}