バイナリツリーを同じ深さのノードのリストに変換するコードを記述しようとしています。ツリーに深さdがある場合は、d個のリストが作成されます。このロジックは、順序通りのトラバースを行い、現在トラバースされているノードを適切な深さのリストに追加することです。Java - ツリーを同じ深さのノードのリストに変換する
public void treeToListofNodesByLevel(Node<T> n,int depth, ArrayList<LinkedList<Node<T>>> treeList){
if(n.right != null){
inOrderWithHeight(n.right, depth + 1);
}
if(treeList.size() >= depth){
treeList.add(depth, new LinkedList<Node<T>>());
}
treeList.get(depth).add(n);
if(n.left != null){
inOrderWithHeight(n.left, depth + 1);
}
}
、その後の呼び出し:
ArrayList<LinkedList<Node<T>>> result = new ArrayList<LinkedList<Node<T>>>();
treeToListofNodesByLevel(root, 0, result);
ウィルこの仕事を?私が扱っていないコーナーケースはありますか? また、リストのリストをメソッドから返すようになっています。これは、メソッド内で初期化し、その後にそれを返し、再帰構造を維持する方法を考えることができないためです。これを行うより良い方法はありますか?
完全な高さが4のバイナリツリーには8つの異なるパスがあります。この場合、リストはどのように見えますか? –