博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
计蒜客 神奇的二叉树 ( 已知先序和中序遍历构建二叉树 )
阅读量:7285 次
发布时间:2019-06-30

本文共 1452 字,大约阅读时间需要 4 分钟。


思路: 题目要求输出在镜子里看到的二叉树 , 观察后可以发现 , 镜像的二叉树后序遍历实际上是先遍历右子树再遍历左子树再遍历根 , 所以只需要改一下后序遍历顺序即可.


#include 
#include
#include
#define MAX_N 50typedef struct Node { char data; struct Node *lchild , *rchild;}Node;Node* init(char data) { Node *node = (Node*)malloc(sizeof(Node)); node->lchild = NULL; node->rchild = NULL; node->data = data; return node;}Node* build(char pre_str[] , char in_str[] , int len) { Node *p = init(pre_str[0]); int pos = strchr(in_str , pre_str[0]) - in_str; if (pos > 0) { p->lchild = build(pre_str + 1 , in_str , pos); } if (pos < len - 1) { p->rchild = build(pre_str + pos + 1 , in_str + pos + 1 , len - pos - 1); } return p;}void postorder(Node *node) { if (node->lchild != NULL) { postorder(node->lchild); } if (node->rchild != NULL) { postorder(node->rchild); } printf("%c",node->data);}void image_postorder(Node *node) { if (node->rchild != NULL) { image_postorder(node->rchild); } if (node->lchild != NULL) { image_postorder(node->lchild); } printf("%c",node->data);}int main() { char pre_str[MAX_N + 10] , in_str[MAX_N + 10]; scanf("%s %s",pre_str , in_str); Node *root = build(pre_str , in_str , strlen(pre_str)); postorder(root); printf("\n"); image_postorder(root); printf("\n"); return 0;}

转载于:https://www.cnblogs.com/WArobot/p/7118502.html

你可能感兴趣的文章
apache动静态编译
查看>>
导出到Excal表格
查看>>
nginx Rewrite 规则
查看>>
周珍:浅析百度调整的几大猜想
查看>>
微软异想天开!居然想让电脑厂商为它生产VR眼镜
查看>>
Linux Mint和LMDE将开发新版
查看>>
Django框架下admin.py的中文修改+xadmin中文修改
查看>>
Linux CentOS 7 设置开机运行级别为3(文本多用户级别)
查看>>
“WPF老矣,尚能饭否”—且说说WPF今生未来(上):担心
查看>>
利用jpinyin将汉字转化成拼音
查看>>
Python之第一个程序
查看>>
习题总结(二)——禁ctrl+alt+delete,禁普通用户登录,禁ping
查看>>
localStorage只能存储字符串
查看>>
【Spring Boot】11.使用docker安装常见服务
查看>>
原子操作的实现
查看>>
HashMap实现原理及源码分析
查看>>
OpenSSL命令之算法类大全
查看>>
MailBee.NET Objects发送电子邮件(SMTP)教程八:使用多个SMTP服务器发送邮件
查看>>
如何在VS CODE调试Angular
查看>>
学习Linux系统的方法有很多,适合自己的才是最好。
查看>>