Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >一般树到二叉树的转换复杂度

一般树到二叉树的转换复杂度
EN

Stack Overflow用户
提问于 2010-12-27 22:36:06
回答 1查看 1.4K关注 0票数 0

将一般的树转换成二叉树的时间和空间复杂度是多少?!

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-28 00:30:58

我不知道你说的“一般树”是什么意思无论如何,插入到平衡二叉树的复杂度是O(log n),其中n是树中当前的项数,因此从某个项列表构建完整的树将是O(n log n),其中n是要插入的项的总数。

您还必须包括从其他树中获取项目所需的时间。该时间取决于您拥有的树的类型。为了便于讨论,我假设您可以在线性时间内遍历它,因此从现有树中获取数据是O(n)

这使得你的总时间复杂度为O(n + (n log n))

所需的额外空间是n * sizeof(node),其中sizeof(node)是二叉树节点的大小。请注意,如果存储在“通用树”节点中的项是指针,则不必支付复制实际对象的成本--只需支付二叉树节点的开销,这通常是三个指针:数据、左子链接和右子链接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4542324

复制
相关文章
树和二叉树的转换
树和二叉树是两种不同的数据结构,树实现起来比较麻烦,但是树可以转换为二叉树进行处理,处理完以后再从二叉树还原为树。 下面说说转换的方法: 1. 树转换为二叉树 (1) 树中所有相同双亲结点的兄弟结点之间加一条连线。 (2) 对树中不是双亲结点第一个孩子的结点,只保留新添加的该结点与左兄弟结点之间的连线,删去该结点与双亲结点之间的连线。 (3) 整理所有保留的和添加的连线,使每个结点的第一个孩子结点连线位于左孩子指针位置,使每个结点的右兄弟结点连线位于右孩子指针位置。 如下是树转换为二叉树的过程示例图:
卡尔曼和玻尔兹曼谁曼
2019/01/22
1.6K0
树和二叉树的转换
数据结构_树、二叉树、森林的转换
[toc] 树 转 二叉树 加线。在所有兄弟结点之间加一条连线 抹线。对树中的每个结点,只保留与第一个孩子之间连线,删除与其他孩子的连线 整理。适当旋转一下,使之结构分明 森林 转 二叉树 把每棵树转换成二叉树 从第一棵二叉树开始,把后一棵二叉树作为前一棵二叉树根结点的右子树 二叉树 转 树 就是树 转 二叉树 的逆过程 作为根结点的每个结点,与左孩子的右孩子以及这个右孩子的右孩子、右孩子的右孩子……建立连线 删除原来所有父结点与右孩子的连线 整理 图:见 树 转 二叉树 的dcba顺序 二叉树 转
用户10551528
2023/05/09
1270
数据结构_树、二叉树、森林的转换
普通二叉树转换成搜索二叉树
struct ListNode { int data; ListNode *lchild,*rchild; }; void CreateBSTree(ListNode *B2_root,ListNode *BSTree_root) { if(BSTree_root==NULL) { BSTree_root = (ListNode*)malloc(sizeof(ListNode)); BSTree_root->lchild=BSTree
用户1624346
2018/04/17
8650
数据结构——树、森林和二叉树的转换
森林是由若干棵树组成的,所以可以完全理解为,森林中的每一棵树都是兄弟,可以按照兄弟的处理办法来操作。步骤不如:
蜻蜓队长
2018/08/03
5290
数据结构——树、森林和二叉树的转换
数据结构之树、森林和二叉树的转换
树转换为二叉树 (1)加线。在所有兄弟结点之间加一条连线。 (2)去线。树中的每个结点,只保留它与第一个孩子结点的连线,删除它与其它孩子结点之间的连线。 (3)层次调整。以树的根节点为轴心,将整棵树顺时针旋转一定角度,使之结构层次分明。(注意第一个孩子是结点的左孩子,兄弟转换过来的孩子是结点的右孩子)
大黄大黄大黄
2018/09/14
9950
数据结构之树、森林和二叉树的转换
数据结构与算法 - 树形结构目录一、树二、二叉树三、树、森林与二叉树的转换
目录 一、树 二、二叉树 三、树、森林与二叉树的转换 一、树 树形结构 是数据元素(结点)之间有分支,并且具有层次关系的结构,可用于表示数据元素之间存在的一对多关系。 树(Tree) 是由n(n≥0)个结点构成的有限集合,当n=0时称为空树。若树非空,则具有以下两个性质:     (1)有且仅有一个特定的结点,称为根(Root)。     (2)其余的结点可分为m个互不相交的集合T1,T2,…,Tm,其中每一个集合都是一棵树,并且称为根的子树( Subtree)。     如下图
且行且珍惜_iOS
2018/12/28
1.9K0
自平衡二叉树实现及时间复杂度分析
我们在遍历二叉树时,先一直往左遍历,于是我们发现,当一棵树的每个节点都只有一个子节点时,他就变成了一个链表,然后链表就说啊:
不作声
2020/12/18
1.7K0
二叉树:二叉树的直径
二叉树直径的定义:二叉树中路径的最大长度 二叉树中路径的最大长度,可以理解所有节点的左右子树高度之和的最大值。假设二叉树有n个节点,编号为{a1,a2,…,an}, 其对应的左右子树的高度之和为H = {h1,h2,h3,…,hn}, 则该二叉树的直径为max(H)。
lexingsen
2022/02/24
7670
相同的树、对称二叉树、翻转二叉树
JavaScript实现LeetCode第100题:相同的树 JavaScript实现LeetCode第101题:对称二叉树 JavaScript实现LeetCode第226题:翻转二叉树 这几道题其实很相似,所以可以放在一起理解。 相同的树 题目描述 给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入: 1 1 / \ / \ 2 3
木子星兮
2020/07/17
4600
相同的树、对称二叉树、翻转二叉树
牛客——二叉树搜索树转换成排序双向链表
这道题要求空间复杂度为O(1),如果没有这个条件可以创建一个vector将所有结点放进去之后进行操作。 所以这道题的思路可以用三叉链的方法,就是一个结点可以多出一个指向父节点的指针。 我们创建出一个指针front,这个指针指向的是中序遍历中的指针的上一个位置,用于前后进行链接。 用递归。
有礼貌的灰绅士
2023/04/17
1200
牛客——二叉树搜索树转换成排序双向链表
完全二叉树,满二叉树,平衡二叉树,搜索二叉树,红黑树
完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。如下图
名字是乱打的
2022/05/13
7530
完全二叉树,满二叉树,平衡二叉树,搜索二叉树,红黑树
【算法】搜索二叉树,完全二叉树,平衡二叉树的判断
它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
MapleYe
2020/03/28
1K0
【从二叉树到红黑树】清晰理解红黑树的演变---红黑的含义
网上关于红黑树的博文很多,但是多是上来即讲定义,未说其所以然,难以理解且无所营养,甚者示例图有误且概念模糊的比比即是;
ZhangXianSheng
2019/09/05
2.3K0
【从二叉树到红黑树】清晰理解红黑树的演变---红黑的含义
【从二叉树到红黑树】清晰理解红黑树的演变---红黑的含义
网上关于红黑树的博文很多,但是多是上来即讲定义,未说其所以然,难以理解且无所营养,甚者示例图有误且概念模糊的比比即是;
云服务器最新
2020/01/15
7420
【从二叉树到红黑树】清晰理解红黑树的演变---红黑的含义
树:普通树(非二叉树)的遍历
树的先根遍历简单而言就与,二叉树的前序遍历相似,都是“根左右”,只不过在左右之分上面,不是简单的只是左右而已,而是同一层上面的节点,从左边的节点遍历结束之后才轮到右边的下一个节点(同一层不一定只是左右两个节点);
全栈程序员站长
2022/07/11
3690
额外空间复杂度O(1) 的二叉树遍历 → Morris Traversal,你造吗?
二叉树的遍历 → 不用递归,还能遍历吗中讲到了二叉树的深度遍历的实现方式:递归、栈+迭代
青石路
2022/05/10
4940
额外空间复杂度O(1) 的二叉树遍历 → Morris Traversal,你造吗?
golang刷leetcode 二叉树链表相互转换
本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。
golangLeetcode
2022/08/02
1730
数据结构与算法(八)-二叉树(斜二叉树、满二叉树、完全二叉树、线索二叉树)
前言:前面了解了树的概念和基本的存储结构类型及树的分类,而在树中应用最广泛的种类是二叉树
2018/10/11
10.6K0
数据结构与算法(八)-二叉树(斜二叉树、满二叉树、完全二叉树、线索二叉树)
LeetCode 平衡二叉树(二叉树)
给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为:
SakuraTears
2022/01/13
3480
LeetCode 平衡二叉树(二叉树)
搜索二叉树、完全二叉树
给定一棵二叉树,已经其中没有重复值的节点,请判断该二叉树是否为搜索二叉树和完全二叉树。
ruochen
2021/11/26
7600

相似问题

二叉树到一般树

26

二叉树时间复杂度

13

有没有办法从一般的树转换成二叉树?

30

最大和根到叶二叉树时间复杂度

13

倾斜二叉树vs完美二叉树空间复杂度

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文