数据结构(六)------树

树:

1.树的概述
2.二叉树概述
3.二分搜索树
4.堆和优先队列
5.线段树
6.Trie前缀树
7.并查集
8.AVL树
9.红黑树

树的定义:
树(Tree) 是n (n≥0) 个结点的有限集。当n=0时称为空树。在任意一颗非空树中: (1) 有且仅有一个特定的称为根(root) 的结点; (2) 当n>1时,其余结点可分为m (m>0) 个互不相交的有限集T1、T2、… Tm,其中每一个集合本身又是一颗树,并且称为根的子树(SubTree)。

在这里插入图片描述
树结点的分类
结点拥有的子树数称为结点的度(Degree) 。度为0的结点称为叶节点(Leaf)或终端结点;度不为0的结点称为非终端结点或分支结点。除根节点外,分支结点也成为内部节点。树的度是树内各结点的度的最大值。

在这里插入图片描述
树结点之间的关系
结点的子树的根称为该结点的孩子(Child) ,相应地,该结点称为孩子的双亲(Parent) 。同一个双亲的孩子之间互称兄弟(Sibling) 。结点的祖先是从根到该结点所经分支,上的所有结点。以某结点为根的子树中任一-结点都称为该结点的子孙。
在这里插入图片描述
树的层次
结点的层次(Level) 从根结点开始定义起,根为第一层,根的孩子为第二层。若某结点在第i层,则其子树的根就在i+1层。其双亲在同一层的结点互为堂兄弟。树中结点的最大层次称为树的深度(Depth) 或高度。
在这里插入图片描述
二叉树概论:

二叉树的定义: 度最大为2的树:

二叉树(Binary Tree)是n (n≥0)个结点的有限集合,该集合或者空集(称为空二叉树),或者由一个根节点和两棵互不相交的、分别称为根节点的左子树和右子树的二叉树组成。

在这里插入图片描述
在这里插入图片描述
二叉树的特殊情况-----------斜树
所有的结点都只有左子树的二叉树叫左斜树。所有结点都只有右子树的二叉树叫右斜树
所以在极端情况下二叉树会退化成线性表(线性 表是树的特殊表现形这种情况也称之为非平衡树
在这里插入图片描述
二叉树的特殊情况一满-叉树
在一棵二叉树中,如果所有分支结点都存在左子树和右子树,并且所有叶子都在同一层上,这样的二叉树称为满二叉树

满二叉树是一种平衡二叉树 平衡二叉树 树的最高高度 减去 树的最低高度不能 大于 1;

在这里插入图片描述
二叉树的特殊情况一完全二叉树
对一棵具有n个结点的二叉树按层序编号,如果编号为i (1≤i≤n)的结点与同样深度的满二叉树中编号为i的结点在二叉树中位置完全相同,则这颗二叉树称为完全二叉树
在这里插入图片描述
二叉树的性质:
1.二叉树的第i层上至多有2i-1 个结点(i>= 1)
2.深度为K的二叉树至多有2k -1 个结点(k>=1)
在这里插入图片描述
3.对任何一棵二叉树
如果终端结点数为n0 ,度为2的结点数为 n2 则n0 = n2 + 1
4.具有n个结点的完全二叉树的深度为在这里插入图片描述
5.如果对于一-棵有n个结点的完全二叉树的结点按层序编号
如果i= 1,结点无双亲;如果i> 1,则双亲是[i/2」如果2i> n,则结点i无左孩子;否则其左孩子为2i
如果2i+ 1> n,则结点无右孩子;否则有孩子为2i+ 1

二叉树的顺序存储结构
二叉树的顺序储存结构就是用一维数组存储二叉树中的结点,并且结点的存储位置,也就是数组的下标要能体现出之间的逻辑关系。
在这里插入图片描述
在这里插入图片描述
二叉树的链式存储结构
二叉树每个结点最多有两个孩子,所以设计为一个数据域和两个指针域的结点进行链接,这种链表也叫作二叉链表。
在这里插入图片描述

小记:平衡,满的,完全的用顺序存储结构。其他情况用二叉链。

二叉树的遍历;
深度优先遍历一前 序遍历DLR
规则是若二叉树为空,则空操作返回,否则先访问根节点,然后前序遍历左子树,再前序遍历右子树

在这里插入图片描述
深度优先遍历一中 序遍历LDR :
规则是若二叉树为空,则空操作返回,否则从根结点开始,中序遍历根节点的左子树,然后访问根节点,最后中序遍历右子树。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
用队列 实现 层次遍历:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
依次类推:

栈实现中序遍历:
在这里插入图片描述
出栈后顺序。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 el-tree 组件的 collapse 方法来折叠所有节点。 使用方式如下: 1. 在 template 中声明一个按钮,并绑定点击事件,调用 el-tree 组件的 collapse 方法。 ``` <template> <el-button @click="collapseAll">折叠所有节点</el-button> <el-tree ref="tree" :data="data" default-expanded-keys="['0-0-0']"> </el-tree> </template> ``` 2. 在 script 中声明方法,调用 el-tree 组件的 collapse 方法。 ``` <script> export default { data() { return { data: [{ id: 1, label: '一级 1', children: [{ id: 4, label: '二级 1-1', children: [{ id: 9, label: '三级 1-1-1' }, { id: 10, label: '三级 1-1-2' }] }] }, { id: 2, label: '一级 2', children: [{ id: 5, label: '二级 2-1' }, { id: 6, label: '二级 2-2' }] }, { id: 3, label: '一级 3', children: [{ id: 7, label: '二级 3-1' }, { id: 8, label: '二级 3-2' }] }] } }, methods: { collapseAll() { this.$refs.tree.collapseAll() } } } </script> ``` 这样,当你点击按钮时,el-tree 中的所有节点都会被折叠。 注意:使用 collapse 方法时,需要在 el-tree 组件上使用 ref 属性,并在方法中使用 this.$refs 访问 el-tree 组件实例。 ### 回答2: element-ui中的el-tree组件提供了折叠和展开节点的功能。要实现折叠所有节点,可以借助element-ui提供的API来完成。 1. 首先,设置el-tree的data属性为一个数组对象,每个对象代表一个节点,设置节点的expand属性为false,表示节点为折叠状态。 2. 然后,通过遍历数组将所有节点的expand属性设置为false,即可实现折叠所有节点。 3. 最后,通过调用el-tree的方法collapseAll(),可以将所有节点折叠起来。 以下是一个示例代码: ```html <template> <el-tree :data="data" default-expand-all :expand-on-click-node="false" ></el-tree> </template> <script> export default { data() { return { data: [ { label: '节点1', expand: false, }, { label: '节点2', expand: false, }, { label: '节点3', expand: false, }, ], }; }, mounted() { this.collapseAllNodes(); }, methods: { collapseAllNodes() { // 遍历节点设置expand属性为false this.data.forEach((node) => { node.expand = false; }); // 调用collapseAll方法折叠所有节点 this.$refs.tree.collapseAll(); }, }, }; </script> ``` 通过上述代码,el-tree组件中的所有节点将会被折叠起来,展示为没有展开的状态。 ### 回答3: element el-tree 是一个 Vue.js 组件库中的形控件,用于展示多层次的数据结构。要折叠所有节点,可以按照以下步骤进行操作: 1. 在 el-tree 组件的数据模型中,给每个节点添加一个布尔类型的属性,用于表示该节点是否处于展开状态。例如,可以为每个节点添加一个名为 "expanded" 的属性,初始值设为 true 表示展开状态。 2. 在 el-tree 组件的模板中,使用 v-if 指令根据节点的 "expanded" 属性来控制节点的显示或隐藏。当节点处于展开状态时,显示该节点及其子节点;当节点处于折叠状态时,隐藏该节点及其子节点。 3. 提供一个按钮或其他交互元素,用于触发折叠所有节点的操作。例如,可以使用一个按钮,并给它绑定一个点击事件。 4. 在点击事件的处理函数中,遍历 el-tree 组件的数据模型,将所有节点的 "expanded" 属性设置为 false,表示折叠状态。 5. 当 "expanded" 属性的值发生改变时,el-tree 组件会自动根据节点的展开状态来刷新视图,显示或隐藏相应的节点。 通过以上步骤,我们可以实现折叠 el-tree 组件中的所有节点。在 el-tree 组件的数据模型中,通过控制节点的 "expanded" 属性,配合视图的显示与隐藏,可以实现节点的展开与折叠操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值