持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情。
树的基本术语
度:子树的个数。
树的度:树中结点的最大度数。
根节点:一棵树可以只有一个结点。
叶子节点:度为0的结点,也称为终端结点。
分支节点:度不为0的结点,也称为非叶子节点或非终端结点。
层数:根节点在第一层,根节点的子节点在第二层,以此类推。
深度:是从根节点开始自顶向下逐层累加的。
高度:是从叶节点开始自底向上逐层累加的。
有序树:树中任意结点的子节点之间有顺序关系。
无序树:树中任意结点的子节点之间无顺序关系。
树中两个结点之间:
路径:由这两个结点之间所经过的结点序列构成。
路径长度:路径上所经过的边的个数。
二叉树的存储结构
顺序存储、链式存储(单链表)
二叉树基本性质
树中的结点数等于所有结点的度数加1
树中结点总数为n,则n=分支数+1
①非空二叉树上的叶子节点数等于度为2的结点数加1,即n0 = n2 + 1.结点总数n = n0+ n1+ n2.
②结点i的左孩子编号为2i(前提:完全二叉树)
③非空二叉树上第k层上至多有2的k-1次方个结点(k>=1)。-----等比
④高度为h的二叉树至多有2的h次方-1个结点(h>=1)。-----求和
⑤具有n个(n>0)结点的完全二叉树的高度为[log2n]+1.-----(对数函数往下取整)
二叉树的遍历(重点)
先序遍历:若二叉树非空,则访问根节点,先遍历左子树,后遍历右子树。(根左右)
中序遍历:若二叉树非空,则中根遍历左子树,访问根节点,中根遍历右子树。(左根右)
后序遍历:若二叉树非空,则后根遍历左子树,后根遍历右子树,访问根节点。(左右根)
层次遍历:从二叉树的根节点开始,按自上而下,从左到右的顺序进行遍历。
只有先序和后序不能唯一确定二叉树。
线索二叉树
树的存储方式
①双亲表示法:采用一组连续空间来存储每个节点,在每个节点中增设一个伪指针,指示其双亲节点在数组中的位置。
②孩子表示法
③孩子兄弟表示法(重点)(二叉树表示法)
左指针指向节点第一个孩子结点的指针
右指针指向节点下一个兄弟结点的指针
树、森林、二叉树的转换
树转换成二叉树
左孩右兄
二叉树转森林