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


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

    二叉树节点数据结构:

    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);
        }
    }
    
  • 相关阅读:
    (一)类数组对象NodeList
    childNodes遍历DOM节点树
    innerText兼容问题处理
    JS中定义对象的几种方式
    javaScript中闭包的工作原理
    输出一组数字中的最小数
    HttpServletResponse对象
    Web.xml过滤器配置及执行顺序概念
    pageContext对象的用法详述
    请求转发与请求重定向
  • 原文地址:https://www.cnblogs.com/weiyi-mgh/p/6434338.html
Copyright © 2020-2023  润新知