下面是問題:二叉樹的最大寬度 - Java代碼
給定一個二叉樹,寫一個函數來獲得給定樹的最大寬度。樹的寬度是所有級別中的最大寬度。二叉樹與完整的二叉樹具有相同的結構,但有些節點爲空。
一個級別的寬度定義爲終端節點之間的長度(級別中最左邊和最右邊的非空節點,其中終端節點之間的空節點也計入長度計算中。
這裏是我的代碼:
public class MaxWidth {
public int widthOfBinaryTree(TreeNode root) {
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
int maxWidth = queue.size();
while (! queue.isEmpty()) {
int size = queue.size();
for (int i = 0; i < size; i++) {
TreeNode rootCur = queue.poll();
if (rootCur.left != null) {
queue.offer(root.left);
}
if (rootCur.right != null) {
queue.offer(root.right);
}
}
if (queue.size() > maxWidth) {
maxWidth = queue.size();
}
}
return maxWidth;
}
}
然而,這結束了一個無限循環〜我也不知道爲什麼感謝
補充:?!輸入樹結構是:
1
3 2
5 3 9
當你試圖調試發生了什麼? – shmosel
嘗試通過調試器逐步執行代碼 –
您能否共享輸入樹結構? –