二叉树的先序中序后序层序遍历C++实现

1.先上代码

#include<vector>
#include <iostream>
#include <queue>
using namespace std;
struct TreeNode {
    
    
    int val;
    struct TreeNode *left;
    struct TreeNode *right;

    TreeNode(int a, TreeNode* l, TreeNode* r) {
    
    
        val = a;
        left = l;
        right = r;
    }
};
//二叉树先序遍历
void pre_order(TreeNode* tree) {
    
    
    if (!tree)
        return;
    cout << tree->val << " ";
    pre_order(tree->left);
    pre_order(tree->right);
}
//二叉树中序遍历
void middle_order(TreeNode* tree) {
    
    
    if (!tree)
        return;
    middle_order(tree->left);
    cout << tree->val << " ";
    middle_order(tree->right);
}
//二叉树后序遍历
void post_order(TreeNode* tree) {
    
    
    if (!tree)
        return;
    post_order(tree->left);
    post_order(tree->right);
    cout << tree->val << " ";
}
//二叉树层序遍历
void Sequence_order(TreeNode* tree) {
    
    
    queue<TreeNode*> q;
    if (tree) //如果二叉树不空,放入队尾
        q.push(tree);
    while(!q.empty())//如果队列不空
    {
    
    
        TreeNode* node = q.front();//取队列第一个元素
        cout << node->val << " ";
        q.pop();
        if (node->left)//不为NULL
            q.push(node->left);
        if(node->right)
            q.push(node->right);
    }
}
int main() {
    
    
    //初始化一个二叉树
    TreeNode* tree = new TreeNode(1,NULL,NULL);
    TreeNode* node1 = new TreeNode(2, NULL, NULL);
    TreeNode* node2 = new TreeNode(3, NULL, NULL);
    TreeNode* node3 = new TreeNode(4, NULL, NULL);
    TreeNode* node4 = new TreeNode(5, NULL, NULL);
    tree->left = node1;
    tree->right = node2;
    node1->left = node3;
    node2->left = node4;

    //二叉树的先序,中序,后序,层序遍历
    pre_order(tree);
    cout << endl;
    middle_order(tree);
    cout << endl;
    post_order(tree);
    cout << endl;
    Sequence_order(tree);
    return 0;
}

2.对代码的解释

代码中测试用的二叉树为:
在这里插入图片描述
代码执行结果:
在这里插入图片描述
先序,中序和后序遍历的代码这里简单提一句:用的递归实现,非常好理解。非递归实现,读者可以自行查找相关资料。

对于层序遍历,要借助队列queue来实现。

欢迎留言评论!如果文章帮助到了您,点个关注、收藏吧!

おすすめ

転載: blog.csdn.net/t18438605018/article/details/120833007