root = new TreeNode(N);
constructTree(N, root);
private void constructTree(int N, TreeNode node) {
if (N > 0) {
node.setLeft(new TreeNode(N-1));
constructTree(N-1, node.getLeft());
}
if (N > 1) {
node.setMiddle(new TreeNode(N-2));
constructTree(N-2, node.getMiddle());
}
if (N > 2) {
node.setRight(new TreeNode(N-3));
constructTree(N-3, node.getRight());
}
N がルート番号であると仮定すると、3 つは N-1、N-2、N-3 の左中右ノードを作成します。
元:
5
/ | \
4 3 2
/|\
3 2 1
等
私の TreeNode クラスには次の変数があります。
private int number;
private TreeNode left, middle, right;
28 より大きい整数でツリーを構築するたびに、OutOfMemoryError が発生します。私の再帰的方法は信じられないほど非効率的ですか、それともこれは自然なことですか? ありがとう!