我正在嘗試編寫代碼以將二叉樹轉換爲具有相同深度的節點列表。如果樹的深度爲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);
將這項工作?有沒有我沒有處理的角落案件? 此外,現在我傳遞List的列表以便由方法返回,因爲我無法想象在方法中初始化它並在最後返回它的方式,同時還保留遞歸結構。有一個更好的方法嗎 ?
完整高度爲4的二叉樹將有8種不同的可能路徑。在這種情況下,列表將如何? –