搜索树
        搜索通过遍历搜索树查询每一种状态空间来找到最优解
        问题的解可能是搜索树的叶子节点(普通树)
        也可能是从根节点到叶子节点的集合(二叉树)

st[i]与节点
        搜索时可用st[i]数组表明是否走过i点
        节点可以携带多种信息
            dfs中dfs(int x , int y, int sum)
            bfs 中 queue<PII>

DFS

    void DFS( 当前状态 )  
    {  
        if(当前状态为边界状态或剪枝)  
        {  
            记录或输出  
            return;  
        }  
        遍历解答树所有子节点 (一般情况下普通树为for循环,二叉树为两个dfs)
        for(int i=0;i<n;i++) 
        {   
            if(子状态满足约束条件)  
                {  
                    st[子状态]=处理;
                    dfs(子状态)  (子状态需保存时可加return)
                    st[子状态]=取消处理;
            } 
        }
        ------------------------------------- 
        st[子状态1]= 处理;    
        dfs(子状态);
        st[子状态1]= 取消处理;
        st[子状态2]= 处理;    
        dfs(子状态);
        st[子状态2]= 取消处理;
    }   



BFS
    入队
    操作1;
    while(q.size())
    {
        出队
        (扩展t所有邻点x)
        {
            if(走过/剪枝)
                continue;
            if(x未被走过)
            {
                入队
                操作2
            }
        }
    }