LCA问题的tarjan解法模板

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 }  
View Code

 
                    
            
                

相关文章: