【数据结构10】满/完全二叉树、顺序/链式存储

目录

一、满二叉树

二、完全二插树

[2.1 完全二叉树特点](#2.1 完全二叉树特点)

三、任意二叉树性质

(1)第i层上节点数最多为2^(i-1)

[(2)高度为h的二叉树最多节点数为2^h - 1](#(2)高度为h的二叉树最多节点数为2^h - 1)

(3)叶子节点数量等于度为2的节点数量+1

(4)有n个节点的完全二叉树高度为多少?

四、顺序/链式存储🤯🤯🤯

[4.1 顺序存储](#4.1 顺序存储)

[4.2 链式存储](#4.2 链式存储)

(1)深度搜索过程

(2)广度搜索过程

(3)根据遍历结果重构二叉树题目


一、满二叉树

每个节点都有两个元素

上图满二叉树的高度为4,根据公式2^h-1可计算出有15个节点

**2^(i-1)**计算得出1-4层分别有1、2、4、8个节点

二、完全二插树

一共给了10(<15)个元素,无法构成满二叉树,故从上到下,从左到右

形成完全二叉树

2.1 完全二叉树特点

三、任意二叉树性质

(1)第i层上节点数最多为2^(i-1)

就是满二叉树以下,结合满二叉树公式来理解

(2)高度为h的二叉树最多节点数为2^h - 1
(3)叶子节点数量等于度为2的节点数量+1

总的节点数 == 度为0的节点 + 度为1的节点 + 度为2的节点 == n0 + n1 + n2

且观察以上完全二叉树的图,发现一根连接线对应一个节点,除了根节点,于是

总的节点数 == 总链接线 + 1(根节点)

== 度为0节点(0线)+ 度为1的节点(1根线)+ 度为2的节点(2根线)+ 1

== n0(0) + n1 + 2*n2 + 1

故n0 + n1 + n2 == n1 + 2*n2 + 1

化简得: n0 = n2 + 1

(4)有n个节点的完全二叉树高度为多少?

设高度为h

2 ^ h -1 == n

2 ^ h == n + 1

h = log(n+1) (以二为底)

(5)节点数为n的完全二叉树,从上到下,从左到右,除了根节点以外,都满足 i/2 、 i 、 2*i 、 2*i + 1规则

四、顺序/链式存储🤯🤯🤯

4.1 顺序存储

性质5,我们可以将任意一颗二插树构造成完全二叉树/满二叉树,找到父节点、子节点

4.2 链式存储

(1)深度搜索过程

前序遍历(根左右):只保留第一次访问

中序遍历(左根右):只保留第二次访问

后序遍历(左右根):只保留最后一次访问

(2)广度搜索过程

获取新节点->处理新节点->有左节点入左,有右节点入右

(3)根据遍历结果重构二叉树题目

如何解:前序+中序、后序+中序

前序第一个节点是根节点,中序里,在根节点左边元素全在左子树中

在根节点右边元素全在右子树中

后序最后一个节点是根节点,中序里,根节点往左,都是左子树的节点

根节点往右,都是右子树的节点

都是先找根节点

前序从开头找(从前往后),后序从尾巴找(从后往前)

找到根节点后去中序里找属于左右子树中的节点,分区

再继续找下一个根节点

记住根节点都是从前后序里找、找到根节点后分区,再继续找下一个根节点

根节点左边元素全安排好了?那前/后序继续出现的第一个节点又是右边子树的根节点

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!

相关推荐
伟大的车尔尼1 小时前
贪心的概念
数据结构·算法·贪心
AI情绪识别开源1 小时前
检信AI高一分班分科智选评估系统 v2.0测试报告
开发语言·数据结构·人工智能·科技
CoderYanger2 小时前
A.每日一题:输入单词需要的最少按键次数 Ⅰ+Ⅱ
java·数据结构·算法·leetcode·面试
雪碧聊技术3 小时前
KMP算法详解
数据结构
positive_zpc6 小时前
进阶数据结构图——关键路径(四)
数据结构·图论·关键路径
孙克旭_6 小时前
单链表进阶实操:5 道常考面试题详细解析【Java 实现】
java·开发语言·数据结构·单链表
Chester_19997 小时前
CSP202206C.角色授权
开发语言·数据结构·c++·蓝桥杯
旖旎夜光8 小时前
LeetCode 238:除自身以外数组的乘积(前缀和) —— 题解
数据结构·c++·算法·leetcode·前缀和
一条大祥脚8 小时前
26杭电暑期第八场(后半)快读|快写|tarjan|路径DP|mex转化|扫描线|前缀和|二分图
数据结构·算法·tarjan·杭电多校·强联通分量·动态规划dp
Chester_199916 小时前
CSP202203C.计算资源调度器
开发语言·数据结构·c++·蓝桥杯