Почему моя функция swapChildren () работает только частично?

Другие два варианта:

Базовый пакет:

df <- unstack(dat1, form = value ~ numbers)
rownames(df) <- unique(dat1$name)
df

sqldf package:

library(sqldf)
sqldf('SELECT name,
      MAX(CASE WHEN numbers = 1 THEN value ELSE NULL END) x1, 
      MAX(CASE WHEN numbers = 2 THEN value ELSE NULL END) x2,
      MAX(CASE WHEN numbers = 3 THEN value ELSE NULL END) x3,
      MAX(CASE WHEN numbers = 4 THEN value ELSE NULL END) x4
      FROM dat1
      GROUP BY name')
0
задан user11039951 23 March 2019 в 03:38
поделиться

1 ответ

Почему ваш метод внешнего обмена цикличен? Почему бы вам не выполнить этот код один раз? Разве это не должно быть обработано с помощью обычной рекурсии, как и другие операции на дереве? И почему в этом методе вы оба вызываете root.swapChildren (), а затем также меняете местами дочерние элементы root в этом методе?

Разве вы просто не хотите этого?:

public class BinaryTree {
    ...
    public void swapChildren() {
        root.swapChildren();
    }
    ....
    class Node {
        ...
        public void swapChildren() {
            if (right != null)
                right.swapChildren();
            if (left != null)
                left.swapChildren();
            Node toBeRight = left;
            Node toBeLeft = right;
            left = toBeLeft;
            right = toBeRight;
        }
        ...
    }
   ...
}
0
ответ дан Steve 23 March 2019 в 03:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: