当前位置: 首页 > article >正文

4.3.1 树、二叉树基本概念

目录

树的基本概念

二叉树基本概念

二叉树存储结构


树的基本概念

树:一个元素可以有≥2个直接后继元素。 非空树有且只有一个根结点。

- 双亲,孩子,兄弟:结点的根节点称为结点的双亲。结点的子结点称为该结点的孩子。相同双亲的结点互为兄弟。

- 结点的度:结点的子树个数。

- 叶子结点:度为0的结点。

- 内部结点:度不为0的结点。

- 结点的层次:根为第一层,根的孩子为第二层,依次类推。

- 树的高度:树的最大层次为数的高度。

- 有序(无序)树:树中结点看作从左到右有序,不能交换顺序,称为有序树。否则称为无序树。

- 森林:m(m≥0)颗互不相交的树形成的集合。 

二叉树基本概念

二叉树:树中每个结点要区分左子树、右子树。二叉树中结点最大的度为2。

满二叉树:深度为k的二叉树,其结点个数为2^k-1。

完全二叉树:其结点与满二叉树中1~n的结点编号一一对应。

高度为h的二叉树中,除了最后一层,其余各层都是满的。最后一层的结点必须是从左到右放置。因而有n个结点的完全二叉树高度为 

\left \lfloor log_{2} n\right \rfloor+1

二叉树存储结构

二叉树顺序存储,对于结点i,左孩子存放位置为2i, 右孩子存放位置是2i+1。 顺序存储适用于完全二叉树,但一般二叉树用顺序存储时会有很多位置未被使用。

二叉树链式存储,结点中需要包含数据元素、左子树、右子树,即一个结点含有3个或两个指针。

typedef struct BiTnode{
    char data;
    struct BiTnode *lchild, *rchild;
} BiTnode;


http://www.kler.cn/a/488423.html

相关文章:

  • leetcode 面试经典 150 题:两数之和
  • 【llm/ollama/qwen】在本地部署qwen2.5-coder并在vscode中集成使用代码提示功能
  • c++ 17 constexpr
  • go语言学习 笔记 1(变量,语法,数据类型)
  • ros2-4.1 服务通信介绍
  • AnaConda下载PyTorch慢的解决办法
  • 阿里云直播互动Web
  • R.swift库的详细用法
  • JavaScript系列(18)--异步编程模式
  • 【UI自动化测试】selenium操作补充
  • 【Docker】docker compose 安装 Redis Stack
  • Linux 文件的特殊权限—ACL权限控制
  • JavaScript Chrome 中的运行
  • Android 12.0 mtk平板camera2横屏预览旋转90度横屏保存录像旋转90度功能实现
  • Python对象的序列化和反序列化工具:Joblib与Pickle
  • Linux 系统 PWM 风扇驱动框架学习记录
  • 【比较乱,如果遇到相同问题可以看】Autoware.universe的绕障线路的参数修改
  • CSS——39. 文本修饰(文本属性)
  • 用 Python 绘制可爱的招财猫
  • 新车月交付突破2万辆!小鹏汽车“激活”智驾之困待解
  • Uniapp仿ChatGPT Stream流式输出(非Websocket)
  • UML(统一建模语言)
  • VUE3 VITE项目在 npm 中,关于 Vue 的常用命令有一些基础命令
  • clickhouse 离线包安装(ubuntu)
  • SOLIDWORKS 或 AutoCAD:选择CAD 解决方案时应考虑哪些问题?
  • TR-069协议学习--Soap报文、事件、RPC方法