【C++二叉树创建和遍历】

学习内容:

分别用递归和非递归实现二叉树的先序,中序,后序遍历。 以及层序遍历。
二叉树的创建
先序:头左右
中序:左头右
后序:左右头
层序:按层遍历

要点:

递归方式遍历时,先序是第一次进入函数就打印,先打印的是头结点然后再打印左节点和右节点。中序是第一次回到函数时打印,此时左节点已经打印,当前打印的是头结点,之后再打印右节点。后序是第二次回到函数时打印,此时左右节点都已打印,当前打印的是头结点。
层序遍历用队列实现,先将头结点压入队列,然后出队时打印,先压左再压右。

                   1
                /      \
              2         3
            /   \      /
           4     5    6

此树的递归序为:1,2,4,4,4,2,5,5,5,2,1,3,6,6,6,3,3,1
先序:1,2,4,5,3,6
中序:4,2,5,1,6,3
后序:4,5,2,6,3,1
层序:1,2,3,4,5,6

代码:

#include <iostream>
#include <stack>
#include <queue>
using namespace std;

struct Node
{
   
    int value;
    Node *left;
    Node *right;
    Node() : value(0), left(nullptr), right(nullptr) {
   }
    Node(int x) : value(x), left(nullptr), right(nullptr) {
   }
    Node(int x, Node *left, Node *right) : value(x), left(left), right(right) {
   }
};

/*
                    1
                 /      \
               2         3
             /   \      /
            4     5    6
*/
void creatBitree(Node *&node) //传入指针的引用(根节点)
{
   
    int in;
    cout << "int put: ";
    cin >> in; // 1  2  4 -1 -1  5 -1 -1  3  6 -1 -1 -1
    if (in == -1)
    {
   
        node = nullptr;
    }
    else
    {
   
        node = new Node(in);
        creatBitree
  • 11
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值