二叉树的建立及递归遍历

Posted wzzkaifa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树的建立及递归遍历相关的知识,希望对你有一定的参考价值。

huangjing

二叉树的的建立方式为前序  二叉树有三种遍历  前序遍历(NLR)  中序遍历(LNR)  兴许遍历(LRN)

非递归的算法明天补上

代码为:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<map>
#include<vector>
#include<cmath>
#include<string>
#include<queue>
#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<<endl;
    printf("中序遍历为:\n");
    mid_visit(p);
    cout<<endl;
    printf("后序遍历为:\n");
    beh_visit(p);
}


/*
ABC##DE#G##F###
-+a##*b##-c##d##/e##f##
*/


以上是关于二叉树的建立及递归遍历的主要内容,如果未能解决你的问题,请参考以下文章

c++如何用非递归的算法去创建二叉树,有没有分层建立二叉树的方法

二叉树的非递归遍历

二叉树的前中后序递归和非递归遍历操作代码

题目 6 建立二叉树,层序、先序遍历(用非递归的方法)

排序二叉树的遍历( 用递归或非递归的方法都可以)

二叉树的遍历