题解 | #在二叉树中找到两个节点的最近公共祖先#
在二叉树中找到两个节点的最近公共祖先
https://www.nowcoder.com/practice/e0cc33a83afe4530bcec46eba3325116
package main import . "nc_tools" /* * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @param o1 int整型 * @param o2 int整型 * @return int整型 */ func lowestCommonAncestor( root *TreeNode , o1 int , o2 int ) int { // write code here return dfs(root, o1, o2).Val } func dfs(root *TreeNode, o1, o2 int) *TreeNode { if root == nil || root.Val == o1 || root.Val == o2 { return root } left := dfs(root.Left , o1, o2) right := dfs(root.Right, o1, o2) //如果left为空,说明这两个节点在root结点的右子树上,我们只需要返回右子树查找的结果即可 if left == nil { return right } // 同上 if right == nil { return left } //如果left和right都不为空,说明这两个节点一个在root的左子树上一个在root的右子树上, //我们只需要返回cur结点即可。 return root }