在對二叉樹進行層序遍歷時,有時為了將各層的元素分開,會使用null標記。如下列**所示:
void
connect(
treelinknode
*root)
queue
<
treelinknode
*> q; q.
push
(root); q.
push
(null);
treelinknode
* prev =
null;
while
(!q.
empty
())
prev = front; if
(front->
left)
if(front->
right)
} else}
} }但是請注意紅色字型,只有當q為非空時,才push null。否則可能會陷入死迴圈。
STL容器遍歷時刪除元素
stl容器遍歷時在迴圈體內刪除元素最容易出錯了,根本原因都是因為迭代器有效性問題,在此記下通用刪除方法,該方法適用於所有含erase成員函式的序列容器 1 std vectormyvec 23 std vector iterator it myvec.begin 4while it myvec.en...
for迴圈遍歷時var let的區別
for var i 0 i 10 i 輸出 但是,如果我在迴圈時同時呼叫wx的api介面10次,那麼輸出的結果就會不同 這是產生了閉關的效應 for var i 0 i 10 i 1213 14 15 輸出 可以看到輸出了10次10,這是因為i自變數的作用域範圍,在這裡它相當於全域性變數。可以理解為...
Java ArrayList遍歷時刪除乙個元素
我們知道arraylist的底層是用陣列實現的,如果你刪除了其中乙個元素,那麼後邊的元素都會向前移動。所以在遍歷時如果刪除元素,就要小心了。第一種方法,用陣列下標進行遍歷,如果需要刪除元素,我們從後向前遍歷,這樣不論有沒有元素刪除,我們都不會遺漏未被遍歷的元素。第二種方法,我們使用迭代器。itera...