家谱树前端特效怎么实现

栏目:资讯发布:2023-09-29浏览:4收藏

家谱树前端特效怎么实现,第1张

首先确定点到点的向量范围

然后做枝叶的随机,将最终节点设置为LEAF

我只给出结构,剩下的LZ自己来吧

function Node(){

thisnodeCount=0;子节点数量

thisisLeaf=false;

thisLChild=[];左枝叶

thisRChild=[];右枝叶

}

结构请按照二叉树的生成来

对于一般的家谱树(一般的多叉树)来说,我们可以很清楚的看出层次关系,树的层数表示代数(一共多少代人),树的最后一层表示最后一代人,由于多叉链表法表示的不方便,因此被迫无奈采用孩子兄弟表示法(二叉链表法)

假设我的家谱是这样的:

 

 

 

 

 

 

转换成孩子兄弟表示法后是这样的:

 

 

 

 

 

 

 

 

 

我们要做的是:这时我们要找有多少代人,以及最后以一代人出来。

 

 

 如果根据第一个图来说找代数就是树的高度,最后一代人就是树的最后一层,二叉链表法中却不如第一个图来的直观,但是只要把握二叉链表法的本质还是很清晰的,根据孩子兄弟表示法的特性,(看二叉链表法的图)结点3的左子树保存的是其孩子,结点3的右子树保存的是其堂兄弟(对照第一个图来看)。假设我们每一个节点都有一个变量用来存储它是第几代的,那么从结点1开始,我们要找结点10是第几代的话,应该这么做:结点1是第一代,然后经过结点5是第二袋,然后看到结点10是第三代。因为第i个结点的左子树是他的孩子,既然是孩子,代数必须+1,而右子树是和第i结点同辈份的(堂兄弟),因此不能加1。本质来说就是往左走代数+1,向右走代数不变。这就是这题目的思路,通过这个方法你就可以知道有多少代人了,且每个节点都有保存了代数信息(用变量存起来了),再次遍历树把最后一代的结点输出即可。清晰了吗?清晰了我就开始写程序。

家谱树前端特效怎么实现

首先确定点到点的向量范围然后做枝叶的随机,将最终节点设置为LEAF我只给出结构,剩下的LZ自己来吧function Node(){thisnodeCount=0;子节...
点击下载
热门文章
    确认删除?
    回到顶部