摘要:
如果新节点指定的目标父节点已经有左孩子和右孩子了,这时插入就会失败,这就是和通用树不同的地方。 插入新结点时,需要指定插入位置。例如,左孩子或者右孩子位置。 不带位置参数的插入函数可以插入到任何位置。 BTreeNode实现了自己的工厂模式,如下所示: BTree.h添加插入函数: 测试程序如下: 阅读全文
posted @ 2018-09-23 19:42
周伯通789
阅读(1044)
评论(0)
推荐(0)
摘要:
先查找根节点元素值是不是9,不是的话就查找两个子树,这就是递归的过程。 返回第一个找到的结点。 添加查找函数: 阅读全文
posted @ 2018-09-23 18:55
周伯通789
阅读(924)
评论(0)
推荐(0)
摘要:
BTree和BTreeNode之间是聚合关系,BTree需要聚合的使用BTreeNode。 BTreeNode要包含指向父节点的指针,方便工程应用。 二叉树也是容器类型,需要实现增删查。 先重构GTreeNode.h和TreeNode.h文件: 对Gtree.h也做一下重构,GTree中原来有这样的 阅读全文
posted @ 2018-09-23 18:12
周伯通789
阅读(323)
评论(0)
推荐(0)
摘要:
证明: 两种求e的方法分别是从上往下看和从下往上看。 阅读全文
posted @ 2018-09-23 14:50
周伯通789
阅读(187)
评论(0)
推荐(0)
摘要:
简化之后树节点中孩子的数量就少了,但是通用树形结构中每个节点可能有很多个孩子,这样简化之后的树还能描述通用的树形结构吗? 每个节点都有一个指向其第一个孩子的指针,每个节点都有一个指向其第一个右兄弟的指针。 任何的树形结构都能用“二杈”的方式表示,也就是用孩子兄弟表示法。 因此,我们的研究内容可以局限 阅读全文
posted @ 2018-09-23 14:17
周伯通789
阅读(248)
评论(0)
推荐(0)
摘要:
通用树结构是一种容器,里面装有数据元素,我们有遍历元素的需求。 非线性决定了树中的每个结点没有固定的编号方式。 将队列中队首的指针定义成遍历时的游标,根节点进入队列后,游标指向根节点。 队头元素弹出,队首的指针就指向了别的元素,这就相当于移动了游标。 添加遍历相关的程序: 测试程序如下: 结果如下: 阅读全文
posted @ 2018-09-23 13:32
周伯通789
阅读(634)
评论(0)
推荐(0)
摘要:
添加count函数: 测试程序如下: 结果如下: 添加求高度和度数的函数: 阅读全文
posted @ 2018-09-23 12:37
周伯通789
阅读(181)
评论(0)
推荐(0)
摘要:
返回的指针谁来负责释放呢?我们采取的措施是使用智能指针来管理这棵树的生命周期。 返回一棵子树的好处是在某些场合,我们能够将H、I、J、M重组,并将它们重新的加回原来的树中。 示例: main函数使用了p指针指向的内存,但是不负责释放,因为从main函数的角度来看,这片内存不是main函数申请的,而从 阅读全文
posted @ 2018-09-23 08:16
周伯通789
阅读(351)
评论(0)
推荐(0)
浙公网安备 33010602011771号