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