protected Term optimalRoot() {
        Term to = end;
        to.clearScore();
        Term from = null;
        while ((from = to.from()) != null) {
            for (int i = from.getOffe() + 1; i < to.getOffe(); i++) {
                terms[i] = null;
            }
            if (from.getOffe() > -1) {
                terms[from.getOffe()] = from;
            }
            // 断开横向链表.节省内存
            from.setNext(null);
            from.setTo(to);
            from.clearScore();
            to = from;
        }
        return root;
    }
protected Term optimalRoot ( ) { Term to = end ; to . clearScore ( ) ; Term from = null ; while ( ( from = to . from ( ) ) != null ) { for ( int i = from . getOffe ( ) + 1 ; i < to . getOffe ( ) ; i ++ ) { terms [ i ] = null ; } if ( from . getOffe ( ) > - 1 ) { terms [ from . getOffe ( ) ] = from ; } from . setNext ( null ) ; from . setTo ( to ) ; from . clearScore ( ) ; to = from ; } return root ; }
取得最优路径的root Term

@return