Algorithm 构造决策树的算法

Algorithm 构造决策树的算法,algorithm,design-patterns,graph,tree,Algorithm,Design Patterns,Graph,Tree,在今晚的一次采访中,我被要求回答这个问题: 为该算法的任意三个输入构建决策树: For i = 1 to n - 1 do If L[i] > L[i+1] swap(L[i],L[i+1]) For i = n-1 downto 2 do If L[i] < L[i-1] swap(L[i],L[i-1]) 对于i=1到n-1 do 如果L[i]>L[i+1] 互换(L[i],L[i+1]) 对于i=n-1到2 do 如果L[i]i

在今晚的一次采访中,我被要求回答这个问题:

为该算法的任意三个输入构建决策树:

For i = 1 to n - 1 do
    If L[i] > L[i+1] 
       swap(L[i],L[i+1])
For i = n-1 downto 2 do
    If L[i] < L[i-1] 
       swap(L[i],L[i-1])
对于i=1到n-1 do
如果L[i]>L[i+1]
互换(L[i],L[i+1])
对于i=n-1到2 do
如果L[i]
我认为我的解决方案是不正确的,因为我得到了16片叶子。我做了以下工作:

                                    Root : 
                                  {a, b, c}
                                    /   \
                       (i>i+1)     /     \  (i<i+1)
                                  /       \
                              {b,a,c}        {a,b,c}
                               /   \          /   \
                              /     \        /     \
                             /       \      /       \
                       {b,c,a}   {b,a,c}   {a,c,b}   {a,b,c}
根目录:
{a,b,c}
/   \
(i>i+1)/\(i,每次从每个节点得到两个答案,最终得到16个叶子


这是正确的吗?如果不是,应该怎么做?

对于
n=3
,第二个循环只运行一次,对于
i=2
。因此,每个节点有两个答案,就有2*4=8个叶子