C++对树进行后序遍历的代码

C++对树进行后序遍历的代码,第1张

概述C++对树进行后序遍历代码

下面是内存溢出 jb51.cc 通过网络收集整理的代码片段。

内存溢出小编现在分享给大家,也给大家做个参考。

#include <stdio.h>#include <string.h>struct Node{    Node *lchild;// 左儿子指针    Node *rchild;// 右儿子指针    char c;//结点字符信息}Tree[50];// 静态内存分配数组  int loc;// 静态数组中已经分配的结点个数Node *creat(){//申请一个结点空间,返回指向其的指针    Tree[loc].lchild=Tree[loc].rchild=NulL;//初始化左右儿子为空    return &Tree[loc++];}char str1[30],str2[30];// 保存前序和中序遍历字符串  //修改打印输出的位置就可以进行相应的前序和中序遍历了voID postorder(Node *T){    if(T->lchild!=NulL){        postorder(T->lchild);    }    if(T->rchild!=NulL){        postorder(T->rchild);    }    printf("%c",T->c);// 遍历该结点,输出字符信息}Node *build(int s1,int e1,int s2,int e2){    Node* ret=creat();    ret->c=str1[s1];//该结点字符为前序遍历中的第一个字符    int rootIDx;    for(int i=s2;i<=e2;i++){        if(str2[i]==str1[s1]){            rootIDx=i;            break;        }    }    if(rootIDx!=s2){        ret->lchild=build(s1+1,s1+(rootIDx-s2),s2,rootIDx-1);//递归还原其左子树    }    if(rootIDx!=e2){        ret->rchild=build(s1+(rootIDx-s2)+1,e1,rootIDx+1,e2);//递归还原其右子树    }    return ret;}    int main(){    freopen("in.txt","r",stdin);    while(scanf("%s",str1)!=EOF){        scanf("%s",str2);//输入        loc=0;// 初始化静态内存空间中已经使用结点个数为0        int L1=strlen(str1);        int L2=strlen(str2);        Node *T=build(0,L1-1,L2-1);        postorder(T);//后序遍历        printf("n");    }    return 0;}

以上是内存溢出(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

总结

以上是内存溢出为你收集整理的C++对树进行后序遍历的代码全部内容,希望文章能够帮你解决C++对树进行后序遍历的代码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1232284.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存