二叉树的三叉链表

本周要实现二叉树三叉链表的存储,刚开始想用递归的方法不过好像不行。

附一个递归代码
P.S.要区分空树
(*T)->data = c; (*T)->lchild = NULL; (*T)->rchild = NULL; CreateBiTree(&((*T)->lchild)); CreateBiTree(&((*T)->rchild));

换一种方法,好像要用到二重链表?


终于强行de出来了bug,果然链表知识没学好到数据结构就自闭
(真的一点都没错

总结一下:
1、C语言都还给老师了c!=’#'写成字符串,死循环了,告辞
2、发现传地址更方便,但是好容易丢失。现在都不太用return了
函数:void
3、传不好地址的结果就是翻车
4、
void CreateBiTree(BiTree T);//创建一棵二叉树
void PreOrderTraverse(BiTree T);//先序遍历二叉树
两者的形参不同
5、为什么不同?
主要应该是在create函数里有一句
T = tree[1];吧,tree是子函数里定义的变量,如果传递的是BiTree T的话就是T = tree[1]返回主函数tree[1]消失了,T也就消失了(?
6、至于void PreOrderTraverse(BiTree T);则挺常规的,之前写栈、链表的时候都用过差不多的。
就是:
typedef struct BiTNode
{
TelemType data;
struct BiTNode *lchild, *rchild, *root;//左右孩子、双亲指针
}BiTNode,*BiTree;
一个是节点一个是指向节点的指针
主函数:BiTree T;
调用的时候:PreOrderTraverse(T);
7、创建的时候:CreateBiTree(&T);用到了二重链表
8、好像要把一个东西传回来的话必须把它的地址传出去。
9、BiTree tree[MAXSIZE] 是指针数组,所以要指向指针的指针

10、改了不用二重链表的结构,从数组里大概可以看出一些端倪:

返回的只有一个节点,没串起来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值