acm模式树的中序遍历
时间: 2023-10-09 16:08:21 浏览: 139
中序遍历是二叉树遍历中的一种,它按照左子树、根节点、右子树的顺序遍历二叉树中的所有节点。在ACM模式树中,中序遍历可以用来按照节点的值的大小顺序输出节点。具体实现可以使用递归或者非递归的方式。
递归实现中序遍历的过程比较简单,只需要按照左子树、根节点、右子树的顺序递归遍历即可。具体代码如下:
```cpp
void inorderTraversal(TreeNode* root) {
if (root == nullptr) {
return;
}
inorderTraversal(root->left);
cout << root->val << " ";
inorderTraversal(root->right);
}
```
非递归实现中序遍历可以使用栈来辅助实现。具体代码如下:
```cpp
void inorderTraversal(TreeNode* root) {
stack<TreeNode*> s;
TreeNode* curr = root;
while (curr != nullptr || !s.empty()) {
while (curr != nullptr) {
s.push(curr);
curr = curr->left;
}
curr = s.top();
s.pop();
cout << curr->val << " ";
curr = curr->right;
}
}
```
以上是中序遍历的两种实现方式,你可以根据需要选择其中一种来实现ACM模式树的中序遍历。
#### 引用[.reference_title]
- *1* *2* *3* [数据结构-中序遍历二叉树(基于C++)](https://blog.csdn.net/m0_61789994/article/details/130490651)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文