LCA问题 详细
1、二叉搜索树上找两个节点LCA
1 public int query(Node t, Node u, Node v) { 2 int left = u.value; 3 int right = v.value; 4 5 //二叉查找树内,如果左结点大于右结点,不对,交换 6 if (left > right) { 7 int temp = left; 8 left = right; 9 right = temp; 10 } 11 12 while (true) { 13 //如果t小于u、v,往t的右子树中查找 14 if (t.value < left) { 15 t = t.right; 16 17 //如果t大于u、v,往t的左子树中查找 18 } else if (t.value > right) { 19 t = t.left; 20 } else { 21 return t.value; 22 } 23 } 24 }