码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 树与森林转


    树的存储结构

     

    双亲表示法(顺序存储)

    用一组连续的存储空间来存储树的节点,同时在每个节点中附加一个指示器(整数域),用以指示双亲结点的位置(下标值)。

    1. #define MAX_TREE_SIZE 100//树中最多节点数
    2. typedef struct
    3. {
    4. ElemType data;//数据元素
    5. int parent;
    6. }PTNode;
    7. typedef struct{
    8. PTNode nodes[MAX_TREE_SIZE];
    9. int n;//节点数
    10. }PTree;

    孩子链表表示法(顺序加链式存储)

    1. struct CTNode{
    2. int child;//孩子节点在数组中的位置
    3. struct CTNode *next;//下一个孩子
    4. };
    5. typedef struct{
    6. ElemType data;
    7. struct CTNode *firstChild;//第一个孩子
    8. }CTBox;
    9. typedef struct{
    10. CTBox nodes[MAX_TREE_SIZE];
    11. int n,r;//节点数和根的位置
    12. }CTree;

    孩子兄弟表示法(链式存储)

    1. typedef struct CSNode{
    2. ElemType data;
    3. struct CSNode *firstchild,*nextsibling;//第一个孩子和右兄弟指针
    4. }CSNode,*CSTree;

    树的先根遍历和后根遍历

    若树非空,先访问根节点,再依次对每颗子树进行先根遍历。

    1. //树的先根遍历
    2. void PreOrder(TreeNode *R){
    3. if(R!=NULL){
    4. visit(R);//访问根节点
    5. while(R还有下一个子树T)
    6. PreOrder(T);
    7. }
    8. }
    9. //树的先根遍历
    10. void PostOrder(TreeNode *R){
    11. if(R!=NULL){
    12. while(R还有下一个子树T)
    13. PostOrder(T);
    14. visit(R);//访问根节点
    15. }
    16. }

     哈夫曼树(最优二叉树)

    1. 节点的权:有某种现实含义的数值(如:表示节点的重要性等)
    2. 节点的带权路径长度:从树的根到该节点的路径长度(经过的边数)与该节点上权值的乘积。
    3. 树的带权路径长度:树中所有叶节点的带权路径长度之和。(WPL)
    4. WPL最小的为哈夫曼树

     构造哈夫曼树

    1.  可变长度编码:允许对不同字符用不等长的二进制表示
    2. 前缀编码:若没有一个编码是另一个编码的前缀,则称这样的编码前缀编码
  • 相关阅读:
    【信号隐藏-数字水印】基于DCT实现音频水印嵌入提取附Matlab代码
    一起学docker系列之二深入理解Docker:基本概念、工作原理与架构
    第三十节——组合式API组件传值
    C++ 中的 lowbit
    Java高级:网络编程
    three.js 第五十四用如何给shader传递结构体数组
    day06_菜单管理(查询菜单,添加菜单,添加子菜单,修改菜单,删除菜单,角色分配菜单,查询菜单,保存菜单,动态菜单)
    Python编程基础:实验5——函数定义与调用
    Ubuntu 18.04 LTS PWN安装
    [微前端实战]---021软件设计原则与分层
  • 原文地址:https://blog.csdn.net/m0_59073956/article/details/127823868
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号