程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 二叉樹的建立及遞歸遍歷

二叉樹的建立及遞歸遍歷

編輯:C++入門知識

二叉樹的建立及遞歸遍歷


huangjing

二叉樹的的建立方式為前序 二叉樹有三種遍歷 前序遍歷(NLR) 中序遍歷(LNR) 後續遍歷(LRN)

非遞歸的算法明天補上

代碼為:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define eps 1e-9
#define ll long long
#define INF 0x3f3f3f3f
using namespace std;

typedef struct  BITNode
{
    char val;
    struct  BITNode *left,*right;
}BITNode,*BITtree;


void buildtree(BITtree &T)
{
     char  ss;
     scanf("%c",&ss);
     if(ss=='#')
     {
         T=NULL;
         return;
     }
     else
     {
         T=(BITtree)malloc(sizeof(BITNode));
         T->val=ss;
         buildtree(T->left);
         buildtree(T->right);
     }
}//先序建立二叉樹

void visit(BITtree T)
{
    if(T->val!='#')
        printf("%c",T->val);
}

void pre_visit(BITtree T)
{
    if(T!=NULL)
    {
         visit(T);
         pre_visit(T->left);
         pre_visit(T->right);
    }
}//遍歷方式為NLR


void mid_visit(BITtree T)
{
    if(T!=NULL)
    {
         mid_visit(T->left);
         visit(T);
         mid_visit(T->right);
    }
}//遍歷方式為LNR


void beh_visit(BITtree T)
{
    if(T!=NULL)
    {
        beh_visit(T->left);
        beh_visit(T->right);
        visit(T);
    }
}//遍歷方式為LRN


int main()
{
    BITtree p;
    buildtree(p);
    printf("前序遍歷為:\n");
    pre_visit(p);
    cout<

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved