树 Tree

数据结构图形解析非常直观

树(Tree)介绍

树(Tree): 一种非线性表结构。是由n(n>=1)个有限结点组成一个具有层次关系的集合。

特点

每个结点有零个或多个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树。

高度(Height)、深 度(Depth)、层(Level)

种类

无序树、有序树、二叉树、满二叉树、完全二叉树、平衡二叉树(avl)、二叉查找树(二叉搜索树、BST)、霍夫曼树、红黑树、B树

二叉树(Binary Tree)

二叉树,每个节点最多有两个子节点,分别是左子节点和右子节点。

存储一棵二叉树,我们有两种方法,一种是基于指针或者引用的二叉链式存储法,一种是基于数组的顺序存储法

二叉树的遍历

广度优先(BFS)
层次遍历:先访问离根节点最近的节点。

深度优先(DFS):前序遍历、中序遍历和后序遍历

前序遍历是指,对于树中的任意节点来说,先打印这个节点,然后再打印它的左子树,最后打印 它的右子树。
中序遍历是指,对于树中的任意节点来说,先打印它的左子树,然后再打印它本身,最后打印它 的右子树。
后序遍历是指,对于树中的任意节点来说,先打印它的左子树,然后再打印它的右子树,最后打 印这个节点本身。

BST树(二叉搜索树):

二叉搜索树(Binary Search Tree,简写BST),又称为二叉排序树,属于树的一种,通过二叉树将数据组织起来,树的每个节点都包含了健值 key、数据值 data、左子节点指针、右子节点指针。其中健值 key 是最核心的部分,它的值决定了树的组织形状;数据值 data 是该节点对应的数据,有些场景可以忽略,举个例子,key 为身份证号而 data 为人名,通过身份证号找人名;左子节点指针指向左子节点;右子节点指针指向右子节点。

二叉查找树也叫二叉搜索树(BST),是为了实现快 速查找而生的。不仅支持快速查找一个数据,还支持快速插入、删除一个数据。

特点:

  • 左右子树也分别是二叉搜索树。
  • 左子树的所有节点 key 值都小于它的根节点的 key 值。
  • 右子树的所有节点 key 值都大于他的根节点的 key 值。
  • 二叉搜索树可以为一棵空树。

​ 一般来说,树中的每个节点的 key 值都不相等,但根据需要也可以将相同的 key 值插入树中

AVL树(平衡二叉树):

AVL树,也称平衡二叉搜索树,AVL是其发明者姓名简写。AVL树属于树的一种,而且它也是一棵二叉搜索树,不同的是他通过一定机制能保证二叉搜索树的平衡,平衡的二叉搜索树的查询效率更高。

特点:

  • AVL树是一棵二叉搜索树。
  • AVL树的左右子节点也是AVL树。
  • AVL树拥有二叉搜索树的所有基本特点。
  • 每个节点的左右子节点的高度之差的绝对值最多为1,即平衡因子为范围为[-1,1]。

红黑树

红黑(Red-black)树

​ 是一种自平衡二叉查找树,1972年由Rudolf Bayer发明,它与AVL树类似,都在插入和删除操作时能通过旋转操作保持二叉查找树的平衡,以便能获得高效的查找性能。**它可以在 O(logn) 时间内做查找,插入和删除等操作。**红黑树是2-3-4树的一种等同,但有些红黑树设定只能左边是红树,这种情况就是2-3树的一种等同了。对于AVL树来说,红黑树牺牲了部分平衡性以换取插入/删除操作时少量的旋转操作,整体来说性能要优于AVL树。

特点:

  • 节点是红色或黑色。
  • 根节点是黑色。
  • 每个叶节点(NIL节点)是黑色的。
  • 每个红色节点的两个子节点都为黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)
  • 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。
  • 最长路径不超过最短路径的2倍

一颗树,两棵树,三棵树_TREE_TO_Tree相关推荐

  1. LeetCode-判断两棵树是否相同

    两颗树的情况可能如下图所示: 1 1/ \ / \2 3 2 31 1/ \ / \2 1 1 2 求解思路:1.先判断两棵树是否为空,如果均为空,那么两棵树肯定相同:如果有一个为空,则不同. 2.在 ...

  2. Xmind基本操作,和一些快捷键,以及合并两棵树

    快捷键 Tab 插入子主题 Enter 在下方插入同级主题 shift+Enter 在上方插入同级主题 Ctrl+Enter 给当前主题插入父主题(对顶级主题无效) 屏幕双击,添加一个自由主题 如何合 ...

  3. LeetCode——Same Tree(判断两棵树是否相同)

    问题: Given two binary trees, write a function to check if they are equal or not. Two binary trees are ...

  4. C语言高墙高,院子里有两棵树。因为有高墙庇护,一棵树长得高大挺直。而另一棵...

    院子里有两棵树.因为有高墙庇护,一棵树长得高大挺直.而另一棵树就不一样,因为要去承受风雨的袭击,它不得不随风生存,树干也就歪曲斑驳. 相关句子 2.那样,等它的根扎下后,树就长得歪曲,不会挺直. 3. ...

  5. 类C语言--树习题:判别两棵树是否相等。

    此代码可以运行,下附有运行区 [题目分析]先判断当前节点是否相等(需要处理为空.是否都为空.是否相等),如果当前节点不相等,直接返回两棵树不相等;如果当前节点相等,那么就递归的判断他们的左右孩子是否相 ...

  6. 检查两棵树是否相同(力扣)图解、思路与实现

    给定两个二叉树,编写一个函数来检验它们是否相同. 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的. 1先判断两棵树只要有一棵树不为空 那么就返回false: 2再判断两棵树都为空 那 ...

  7. 递归判断两棵树是否相同

    递归写法判断两棵树是否相同: bool flag = true; // 默认认为两棵树是相同的,递归判断过程中改变flag值,一旦有一个不同,就跳出 void judge(node* root1, n ...

  8. 比较两棵树是否相同(关键词:树/二叉树/相同/相等/完全相同)

    比较两棵树是否相同 实现 def isSameTree(p, q):if p == None and q == None:return Trueelif p != None and q != None ...

  9. 数据结构 ACM :比较两棵树是否相等。

    题目: 有如下数据结构: typedef struct TreeNode{char c;TreeNode *leftChild;TreeNode *rightChild; }; 现在实现函数:int ...

  10. 百度面试题:判断两棵树是否相等

    请实现两棵树是否相等的比较,相等返回1,否则返回其他值,并说明算法复杂度. 数据结构为: typedef struct_TreeNode{ char c; TreeNode *leftchild; T ...

最新文章

  1. COM:细菌-真菌的平衡维持动植物健康
  2. SpringCloud-使用熔断器仪表盘监控熔断
  3. C# Dev控件中的 GridControl 双击行事件
  4. 以某个字符开始_小白从零开始数据分析01—Excel常用公式汇总(数据清洗)
  5. java 检测表情符号_java – 检测String中的字符是否是表情符号(使用Android)
  6. 免费mac虚拟机下载 快速安装win系统
  7. linux 屏幕输出 高亮_通过printf设置Linux终端输出的颜色和显示方式
  8. matplotlib绘图进阶
  9. 【语音编码】基于matlab PCM编解码【含Matlab源码 555期】
  10. 《土豆荣耀》重构笔记(七)控制角色移动并添加音效
  11. 毕业论文编辑器软件制作经历与思考1
  12. 效仿大众?宝马全新平台战略:简化硬件,强化软件差异化
  13. docker 停止、启动、删除镜像指令操作总结
  14. 蒲公英快速查询苹果手机UDID方法
  15. linux配置路由器命令手册,Linux配置路由器
  16. 计算机网络基础冷知识,技术控必备冷知识
  17. dbeave连接达梦数据库简单操作使用
  18. luogu3426 [POI2005]SZA-Template 后缀树
  19. 梅林rpc服务器用户名密码,网件(NETGEAR)路由器默认密码_初始密码_用户名密码-192路由网...
  20. ntp实现多台服务器时间同步[实测]

热门文章

  1. Java十六进制码的字符_【重点】java中 转16进制字符串 hex
  2. FF新鲜事禁止弹窗方法
  3. 6.Linux运维常用命令
  4. 算法训练day24 | php | 332.重新安排行程 , 51. N皇后 , 37. 解数独 ,总结
  5. 浅析Revit体量创建的几种方式
  6. 烟雨黑帽SEO程序演示:AI智能模板在线制作制作神器-单域名版+多域名版-一键批量制作黑帽程序所使用的单页模板
  7. Java性能权威指南-总结5
  8. Haroopad安装运行提示缺少libgconf
  9. Ubuntu20.04搜狗输入法安装与卸载——美化日志
  10. 一个极致优秀的在线图片压缩网站☞TinyPNG