表示方法:树形表示法、嵌套集合表示法、凹行表示法、广义表表示法

度为0的是叶子节点或者终端节点

度不为0的是非终端节点或者分支节点或者内部节点

根节点称为开始节点

数的存储结构:双亲表示法、孩子链表法、孩子兄弟表示法

树常用遍历:前序遍历和后序遍历

森林常用遍历:前序遍历和后序遍历

前序遍历一个树等于前序遍历该树对应的二叉树,后序遍历一棵树等于中序遍历该树对应的二叉树。

公式及推导过程:

满k叉树编号为i的节点第一个孩子的编号 j 满足 \(j=(i-1) * k +2;\)

推导过程
设: 节点 i 处在该 m 叉树的第 h层, (h = 1, 2, 3...)

则 前 h - 1 层共有 $N1 = \frac{k^{h-1}-1}{k-1} $   个节点

同理 前 h 层共有  \(N2 =\frac{k^{h} - 1}{k -1}\) 个节点

显然 i 是第 h 层的 \(i - N1​\) 个节点, 即 节点i 有 \(i- N1 - 1 ​\) 个左兄弟

故节点i 的第一个孩子 j 有 \((i- N1 - 1)* k\) 个左兄弟

由此可得 j在第h + 1 层中的位置为 $ (i - N1 -1) * k +1$

那么 节点j 在整棵满 k叉树的编号为 $ N2 +(i - N1 -1)*k + 1$

即 $ j =\frac{k^{h} - 1}{k -1} +(i -\frac{k^{h-1} -1}{k-1} -1)*k + 1$

整理可得: \(j=(i-1) * k +2\)

推导:满k叉树编号为i的节点第j个孩子的编号 j 满足 \(j=(i-1) * k +1+j\);

哈夫曼树

posted @ 2019-10-25 18:55  snail灬  阅读(194)  评论(0编辑  收藏  举报