二叉树中序遍历打印二叉树简单
时间: 2024-05-25 14:08:08 浏览: 142
在二叉树中,中序遍历是指先遍历该节点的左子树,然后访问该节点,最后遍历该节点的右子树。中序遍历的遍历顺序为 左-根-右。
中序遍历可以用递归或者迭代的方式实现,其中递归方法比较简单。下面是中序遍历的递归实现代码:
```c++
void inorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
inorderTraversal(root->left);
cout << root->val << " ";
inorderTraversal(root->right);
}
```
对于非递归的实现方法,一般使用栈来模拟递归过程。我们将二叉树中的节点压入栈中,然后依次弹出栈顶元素进行遍历,同时将其右子树和左子树压入栈中。
下面是中序遍历的非递归实现代码:
```c++
void inorderTraversal(TreeNode* root) {
stack<TreeNode*> s;
TreeNode* p = root;
while (p != NULL || !s.empty()) {
while (p != NULL) {
s.push(p);
p = p->left;
}
p = s.top();
s.pop();
cout << p->val << " ";
p = p->right;
}
}
```
阅读全文