类别:定向加速 / 日期: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;
}

这个示例代码中,首先定义了二叉树的节点结构,包含一个整数值以及左右子节点的指针。然后,使用非递归方法实现了中序遍历的函数。在函数中,使用一个栈来辅助遍历,首先将根节点赋值给,然后进入循环,循环条件是不为空或栈不为空。在循环中,首先将及其左子节点依次入栈,直到当前节点没有左子节点为止。然后,从栈中弹出一个节点,输出节点的值,并将指向右子节点,重复上述过程直到遍历完所有节点。

在函数中,创建了一个二叉树并调用函数进行中序遍历,并输出结果。

这是一个简单的非递归中序遍历二叉树的实现,你可以根据自己的需求进行修改和扩展。


新澳门宝典下载app

打赏

感谢您的赞助~

打开支付宝扫一扫,即可进行扫码打赏哦~

您好,欢迎到访网站!
  查看权限

标签列表

友情链接