利用栈并且采用非递归先序算法建立二叉树
时间: 2023-04-19 16:01:15 浏览: 104
非递归先序算法建立二叉树的步骤如下:
1. 创建一个空栈,将根节点压入栈中。
2. 循环执行以下步骤,直到栈为空:
a. 弹出栈顶节点,将其作为当前节点。
b. 读入下一个节点的值,创建一个新节点。
c. 如果新节点的值小于当前节点的值,则将新节点作为当前节点的左子节点,并将新节点压入栈中。
d. 如果新节点的值大于当前节点的值,则将新节点作为当前节点的右子节点,并将新节点压入栈中。
3. 返回根节点,建立完成。
例如,假设要建立以下二叉树:
```
5
/ \
3 8
/ \ \
1 4 9
```
则可以按照以下步骤建立:
1. 将根节点 5 压入栈中。
2. 弹出栈顶节点 5,将其作为当前节点。
3. 读入下一个节点的值 3,创建一个新节点。
4. 将新节点 3 作为当前节点的左子节点,并将新节点压入栈中。
5. 读入下一个节点的值 1,创建一个新节点。
6. 将新节点 1 作为当前节点的左子节点,并将新节点压入栈中。
7. 读入下一个节点的值 4,创建一个新节点。
8. 将新节点 4 作为当前节点的右子节点,并将新节点压入栈中。
9. 弹出栈顶节点 1,将其作为当前节点。
10. 读入下一个节点的值 8,创建一个新节点。
11. 将新节点 8 作为当前节点的右子节点,并将新节点压入栈中。
12. 读入下一个节点的值 9,创建一个新节点。
13. 将新节点 9 作为当前节点的右子节点,并将新节点压入栈中。
14. 弹出栈顶节点 4,将其作为当前节点。
15. 返回根节点 5,建立完成。
最终建立的二叉树如下:
```
5
/ \
3 8
/ \ \
1 4 9
```