分層遍歷時加NULL標記注意事項

2021-07-05 07:14:43 字數 489 閱讀 1833

在對二叉樹進行層序遍歷時,有時為了將各層的元素分開,會使用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...