zoukankan      html  css  js  c++  java
  • C++遍历树递归

    /*
    *   description:树的遍历示例,递归
    *               访问顺序:
    *               前序: 当前节点 - 左子树   - 右子树
    *               中序: 左子树   - 当前节点 - 右子树
    *               后序: 左子树   - 右子树   - 当前节点
    *
    *   writeby:    nick
    *   date:       2012-10-22 23:56
    */
    #include <iostream>
    
    using namespace std;
    
    struct node 
    {
        int item;
        node *l, *r;
        node(int n)
        {item=n; l=0; r=0;}
    };
    typedef node *link;
    
    //前序遍历
    void pretraverse(link h, void visit(link))
    {
        if(h==0) return;
        visit(h);
        pretraverse(h->l, visit);
        pretraverse(h->r, visit);
    }
    
    //中序遍历
    void midtraverse(link h, void visit(link))
    {
        if(h==0) return;
        midtraverse(h->l, visit);
        visit(h);
        midtraverse(h->r, visit);
    }
    
    //后序遍历
    void posttraverse(link h, void visit(link))
    {
        if(h==0) return;
        posttraverse(h->l, visit);
        posttraverse(h->r, visit);
        visit(h);
    }
    
    void visit(link p)
    {
        cout << p->item << " ";
    }
    
    int main()
    {
        link root = new node(4);
        root->l = new node(5);
        root->r = new node(6);
        cout << "先序遍历:";
        pretraverse(root, visit);
    
        cout << endl << "中序遍历:";
        midtraverse(root, visit);
    
        cout << endl << "后序遍历:";
        posttraverse(root, visit);
        
        return 0;
    }
  • 相关阅读:
    翻转链表二
    最短路径算法
    在二叉树中插入节点
    LightOJ 1341
    串的基本操作
    链队列的基本操作
    LightOJ 1370
    poj 3060 Visible Lattice Points
    欧拉函数介绍及简单模板
    zoj 3593 One Person Game
  • 原文地址:https://www.cnblogs.com/wouldguan/p/2735119.html
Copyright © 2011-2022 走看看