多叉树的创建和遍历(为Trie树做准备)

本文介绍了多叉树在实现Trie树算法中的重要性,通过回顾多叉树的实现和遍历,为理解Trie树(前缀树)的构建打下基础。内容包括参考《数据结构与算法分析》一书的算法实现,采用节省空间的二叉链表法,以及展示多叉树的先序和后序遍历结果。此外,还提及了数学之美中关于层级遍历二叉树的问题,暗示可能通过优化数据结构简化问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

trie树实际上是一种多叉树的应用,Trie树是用来解决,搜索引擎中,输入前缀可以给出提示词的非常好的解决方案

在实现trie书算法以前,我们先回顾温习下,多叉树的实现和遍历(对于我们trie树的实现和便利帮助很大),这里就不说普通二叉树,因为原理一样,但相对简单

下面是算法实现,这个算法参考了<数据结构与算法分析>这本书中的描述和定义,用了一个很节省空间的结构定义

并没有在父节点中存储所有的子节点,而是存储了节点的链表,一般叫做二叉链表法,这样算法看起来非常像二叉树了

#include<stdio.h>
#include<stdlib.h>
#define maxsize 100
typedef struct node
{
 char *data;
 struct node *first_child,*next_sibling;//fc是第一个孩子,nb是fc的临节点
} tree;

/**
 a
 / \ \
 b c d
 /\ \
e f g
创建出来的树结构如上
 */

tree *insertTree(char *ch, tree *parent, tree *pre_sibling) {
 tree *child = (tree *)malloc(sizeof(tree));
 child->data = ch;

if (parent != NULL) parent->first_child = child;
 if (pre_sibling != NULL) pre_sibling->next_sibling = child;

child->first_child = NULL;
 child->next_sibling = NULL;

return child;
}

/**二叉链表创建树*/
tree *create() {
 //创建root节点
 tree *root = (tree *)malloc(sizeof(tree));
 root->data = "A";
 root->first_chi
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值