package main
import . "nc_tools"
/*
 * type TreeNode struct {
 *   Val int
 *   Left *TreeNode
 *   Right *TreeNode
 * }
 */

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param root TreeNode类 
 * @param p int整型 
 * @param q int整型 
 * @return int整型
*/
func lowestCommonAncestor( root *TreeNode ,  p int ,  q int ) int {
    // write code here
    num1, num2 := p, q
	var dfs func(node *TreeNode) *TreeNode
	dfs = func(node *TreeNode) *TreeNode {
		if node == nil {
			return nil
		}
		if (node.Val >= num1 && node.Val <= num2) ||
			(node.Val >= num2 && node.Val <= num1) {
			return node
		}
		if node.Val > num1 && node.Val > num2 {
			return dfs(node.Left)
		} else {
			return dfs(node.Right)
		}
	}
	return dfs(root).Val
}