給定一棵二叉樹,通過(guò)迭代的方式前序遍歷并返回節(jié)點(diǎn)值列表
1. 編寫一個(gè)表示二叉樹節(jié)點(diǎn)的靜態(tài)內(nèi)部類為了構(gòu)建一棵二叉樹,我們首先需要定義一個(gè)靜態(tài)內(nèi)部類來(lái)表示二叉樹的節(jié)點(diǎn)。該類包含一個(gè)整型變量用于存儲(chǔ)節(jié)點(diǎn)的值,并擁有左右子節(jié)點(diǎn)的引用。```javastatic
1. 編寫一個(gè)表示二叉樹節(jié)點(diǎn)的靜態(tài)內(nèi)部類
為了構(gòu)建一棵二叉樹,我們首先需要定義一個(gè)靜態(tài)內(nèi)部類來(lái)表示二叉樹的節(jié)點(diǎn)。該類包含一個(gè)整型變量用于存儲(chǔ)節(jié)點(diǎn)的值,并擁有左右子節(jié)點(diǎn)的引用。
```java
static class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int val) {
val;
}
}
```
2. 通過(guò)迭代的方式實(shí)現(xiàn)前序遍歷
為了實(shí)現(xiàn)通過(guò)迭代的方式前序遍歷一棵二叉樹,我們可以借助棧來(lái)存儲(chǔ)待遍歷的節(jié)點(diǎn)。具體思路如下:
1. 將當(dāng)前節(jié)點(diǎn)的值添加到返回列表中。
2. 如果當(dāng)前節(jié)點(diǎn)有右子節(jié)點(diǎn),則將右子節(jié)點(diǎn)入棧。
3. 如果當(dāng)前節(jié)點(diǎn)有左子節(jié)點(diǎn),則將左子節(jié)點(diǎn)替換為當(dāng)前節(jié)點(diǎn),并繼續(xù)遍歷。
4. 如果當(dāng)前節(jié)點(diǎn)既沒(méi)有左子節(jié)點(diǎn)也沒(méi)有右子節(jié)點(diǎn),并且棧不為空,則彈出棧頂元素作為當(dāng)前節(jié)點(diǎn)繼續(xù)遍歷。
以下是通過(guò)迭代的方式前序遍歷二叉樹的示例代碼:
```java
public List
List
Stack
if (root ! null) {
stack.push(root);
}
while (!()) {
TreeNode current stack.pop();
();
if (current.right ! null) {
stack.push(current.right);
}
if (current.left ! null) {
stack.push(current.left);
}
}
return result;
}
```
3. 通過(guò)遞歸的方式實(shí)現(xiàn)前序遍歷
除了使用迭代的方式,我們也可以使用遞歸的方式來(lái)實(shí)現(xiàn)前序遍歷一棵二叉樹。遞歸的思路比較簡(jiǎn)單,即先訪問(wèn)當(dāng)前節(jié)點(diǎn)的值,然后遞歸地遍歷左子樹和右子樹。
以下是通過(guò)遞歸的方式前序遍歷二叉樹的示例代碼:
```java
public List
List
preorderTraversalHelper(root, result);
return result;
}
private void preorderTraversalHelper(TreeNode node, List
if (node null) {
return;
}
();
preorderTraversalHelper(node.left, result);
preorderTraversalHelper(node.right, result);
}
```
4. 編寫本地測(cè)試方法
在完成算法的編寫后,我們需要編寫本地測(cè)試方法來(lái)驗(yàn)證算法的正確性。以下是一個(gè)簡(jiǎn)單的示例:
```java
public static void main(String[] args) {
Solution solution new Solution();
// 構(gòu)建二叉樹
TreeNode root new TreeNode(1);
root.left new TreeNode(2);
root.right new TreeNode(3);
root.left.left new TreeNode(4);
root.left.right new TreeNode(5);
// 通過(guò)迭代的方式前序遍歷二叉樹
List
// 輸出結(jié)果
(result);
}
```
5. 運(yùn)行本地測(cè)試方法
運(yùn)行本地測(cè)試方法,并觀察控制臺(tái)輸出是否符合預(yù)期。如果輸出結(jié)果與預(yù)期一致,則說(shuō)明本地測(cè)試通過(guò)。
6. 提交算法至平臺(tái)進(jìn)行測(cè)試
經(jīng)過(guò)本地測(cè)試確認(rèn)算法的正確性后,可以將算法提交至相應(yīng)的平臺(tái)進(jìn)行進(jìn)一步的測(cè)試。確保算法能夠通過(guò)平臺(tái)的測(cè)試,以保證其在實(shí)際應(yīng)用中的可靠性和穩(wěn)定性。