类别:定向加速 / 日期:2025-04-14 / 浏览:5 / 评论:0
在C++中,可以使用非递归算法来进行二叉树的中序遍历。下面是一个示例代码:
#include <iostream> #include <stack> using namespace std; // 二叉树的节点定义 struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; // 非递归中序遍历二叉树 void inorderTraversal(TreeNode* root) { if (root == NULL) return; stack<TreeNode*> s; TreeNode* current = root; while (current != NULL 马会传真2020资料|| !s.empty()) { while (current != NULL) { s.push(current); current = current->left; } current = s.top(); s.pop(); cout << current->val << " "; current 港彩今晚开什么号码2023第27= current->right; } } // 创建二叉树(示例) TreeNode* createTree() { 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); root->right->left = new TreeNode(6); root->right->right = new TreeNode(7); return root; } int main() { TreeNode* root = createTree(); cout << "Inorder traversal: "; inorderTraversal(root); return 0; }
这个示例代码中,首先定义了二叉树的节点结构,包含一个整数值以及左右子节点的指针。然后,使用非递归方法实现了中序遍历的函数。在函数中,使用一个栈来辅助遍历,首先将根节点赋值给,然后进入循环,循环条件是不为空或栈不为空。在循环中,首先将及其左子节点依次入栈,直到当前节点没有左子节点为止。然后,从栈中弹出一个节点,输出节点的值,并将指向右子节点,重复上述过程直到遍历完所有节点。
在函数中,创建了一个二叉树并调用函数进行中序遍历,并输出结果。
这是一个简单的非递归中序遍历二叉树的实现,你可以根据自己的需求进行修改和扩展。