树与树算法

树的每一个结点都有子节点,二叉树的每一个结点有0-2个子节点。于是二叉树的形状如下图所示:

完全二叉树:除了最底层之外,其它层全部是满的。若最底层也补充满了,则叫做满二叉树

二叉树结点实现:

它自身就是父节点,因此需要有两个子节点。

二叉树添加元素的实现:

 

 添加元素需要对结点进行挨个判定是否为空,如果父节点为空,就要判定子节点。按照广度遍历的顺序依次判断。使用循环实现。

为什么用队列呢?--因为不知道树有多少个结点,因此无法指定长度,也就不容易指定结束条件。但使用队列的话,可以把判断完毕的结点直接拿出去,不再存放在队列中,只把子节点放进来。于是当队列为空的时候就说明结束了。

 

广度遍历和先序遍历实现:

代码中问题解决:

1.使用递归的时候,调用自身函数,需要加上self,不然有语法错误

2.先序中序后序遍历,在代码上的区别就是打印结点的位置不同,注意各自递归调用的时候,是调用的自身,注意名字不要写成了其他函数。

 

由中序和后序遍历所得的排序,可以倒推出树的形状从而也可得出先序遍历。

中序和先序同理。

但若只有先序和后序则无法倒推。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值