これはバイナリツリーを作成して要素を挿入するために書いたJavaプログラムです。しかし、要素を再帰的に挿入するためのプログラムを書くことができず、したがってそれぞれ手動で左と右の子を指定しなければなりませんでした。バイナリツリーに再帰的に挿入する方法と再帰的に要素を印刷する方法はありますか?
public class BinTree {
private Node root;
private class Node {
Node left;
Node right;
int data;
private Node(int data) {
this.data = data;
left = null;
right = null;
}
}
public BinTree() {
root = null;
}
public void preorder(Node temp) {
temp = root;
if(temp != null) {
System.out.print(temp.data + " ");
preorder(temp.left);
preorder(temp.right);
}
}
public void add() {
root = new Node(10);
root.left = new Node(20);
root.right = new Node(30);
root.left.left = new Node(40);
root.left.right = new Node(50);
root.right.left = new Node(60);
}
public static void main(String[] args) {
BinTree bt = new BinTree();
bt.add();
System.out.print(bt.root.data);
System.out.print(" " + bt.root.left.data);
System.out.print(" " + bt.root.right.data);
System.out.print(" " + bt.root.left.left.data);
System.out.print(" " + bt.root.left.right.data);
}
}
また、私は上記のプログラムのために書いた先行順走査が失敗したと私はいくつかの果てしない出力を得た:
は、ここに私のコードです。実行を殺さなければならなかった!
したがって、バイナリツリーに要素を挿入する正しい実装を再帰的に提供できるものがあれば、大きな助けになるでしょう。
また、可能であれば、私の予約注文トラバーサルでどこでミスをしたか教えてください。
ありがとうございます!
ノードを再帰的に挿入する方法は不明です。その目的のための関数は、挿入の位置を見つける方法の基準を持つ必要があります。 – Codor
はい、それは私が立ち往生したところです!私は前の挿入の後に挿入の次のポイントの位置を見つけることができません! – doctorwho