二叉树添加索引
前序遍历创建,前序打印。。。中序遍历添加索引,再循环打印。。。
typedef struct BiNode { char data; char ltag, rtag; struct BiNode *lchild, *rchild; }BiNode; void createTree(BiNode **root); void printTree(BiNode *root, int lever); void addThread(BiNode *root, BiNode **pre); void PTree(BiNode *root, const BiNode *pre); int main(int argc, char *argv[]) { BiNode *root = NULL; BiNode pre = {0, 't', 't', NULL, NULL}; BiNode *prePointer = ⪯ int lever = 1; createTree(&root); printTree(root, lever); pre.ltag = 't'; pre.lchild = root; addThread(root, &prePointer); pre.rtag = 't'; pre.rchild = prePointer; prePointer->rtag = 't'; prePointer->rchild = ⪯ PTree(root, &pre); return 0; } void createTree(BiNode **root) { char el; scanf("%c", &el); if(el == ' ') { *root = NULL; }else { *root = (BiNode *)malloc(sizeof(BiNode)); (*root)->data = el; (*root)->ltag = 'l'; (*root)->rtag = 'l'; createTree(&((*root)->lchild)); createTree(&((*root)->rchild)); } } void printTree(BiNode *root, int lever) { if(root) { printf("data: %c, lever: %d \n", root->data, lever); printTree(root->lchild, lever+1); printTree(root->rchild, lever+1); } } void addThread(BiNode *root, BiNode **pre) { if(root) { if(root->lchild) { addThread(root->lchild, pre); }else { root->ltag = 't'; root->lchild = (*pre); } if((*pre)->rchild == NULL) { (*pre)->rtag = 't'; (*pre)->rchild = root; } (*pre) = root; addThread(root->rchild, pre); } } void PTree(BiNode *root, const BiNode *pre) { BiNode *p = root; while(p->rchild != pre) { while(p->ltag == 'l') { p = p->lchild; } printf("%c ", p->data); while(p->rtag == 't' && p->rchild != pre) { p = p->rchild; printf("%c ", p->data); } p = p->rchild; } printf("%c \n", p->data); }
创建的时候输入需要类似:AB C \n
B C后面各有两个空格,代表其左子树和右子树都为空。。。。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 《HelloGitHub》第 106 期
· 数据库服务器 SQL Server 版本升级公告
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)