二叉树的前中后序遍历简单的递归

二叉树的遍历 无外乎广度和深度 其中深度又分为前中后序遍历三种情况  这三种遍历若只是递归方法 自然很是简单 但递归代码简单 若嵌套层次太深 会栈溢出

 

二叉树节点数据结构:

struct Binary_node
{
    int val;
    Binary_node *left;
    Binary_node *right;
    Binary_node(int v = 0, Binary_node *le = nullptr, Binary_node *ri = nullptr) :val(v), left(le), right(ri)
    {}
};

 

二叉树类:

class BinaryTree
{
public:
    struct Binary_node *root;

    BinaryTree(Binary_node *pnode = nullptr) : root(pnode){}
    ~BinaryTree(){}

    void pre_order_recur(Binary_node *root, std::vector<int> &res);
    void in_order_recur(Binary_node *root, std::vector<int> &res);
    void post_order_recur(Binary_node *root, std::vector<int> &res);

    std::vector<int> pre_order_iter(Binary_node *root);
    std::vector<int> in_order_iter(Binary_node *root);
    std::vector<int> post_order_iter(Binary_node *root);

    //广度遍历
    std::vector<int> level_trave(Binary_node *root);
};

 

前中后序遍历的递归方法  不多做说明 太简单:

void BinaryTree::pre_order_recur(Binary_node *root, std::vector<int> &res)
{
    if (root)
    {
        res.push_back(root->val);
        pre_order_recur(root->left, res);
        pre_order_recur(root->right, res);
    }
}
void BinaryTree::in_order_recur(Binary_node *root, std::vector<int> &res)
{
    if (root)
    {
        in_order_recur(root->left, res);
        res.push_back(root->val);
        in_order_recur(root->right, res);
    }
}
void BinaryTree::post_order_recur(Binary_node *root, std::vector<int> &res)
{
    if (root)
    {
        post_order_recur(root->left, res);
        post_order_recur(root->right, res);
        res.push_back(root->val);
    }
}

 

转载于:https://www.cnblogs.com/weiyi-mgh/p/6434338.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值