二叉树基础知识

1.二叉树的性质

性质:

左孩子、右孩子、左子树、右子树;
二叉树第ii层(i>=1)最多2i12^{i-1}个节点;
一个nn层满二叉树,共2n12^n-1个节点;
完全二叉树:只在最后一层的最后有缺失编号的满二叉树;
根到节点uu的距离为节点uu的深度;节点uu到到它的叶子节点的距离为节点u的高度;根的高度最大,称为树的高。

二叉树的优势:

(1)访问效率高。一棵有NN个节点的平衡二叉树,从根到叶子节点只需log2Nlog_2N步;但不平衡的二叉树,极端情况下会退化成“链”,访问效率会降低。维护二叉树的平衡是高级数据结构的主要任务之一。
(2)很适合整体到局部、局部到整体的操作。如求区间最值、区间和、区间翻转、区间合并、区间分裂等。
(3)基于二叉树的算法容易设计与实现。如DFSBFSDFS、BFS

2.二叉树的存储结构

(1)动态二叉树。

每次newnew一个节点,使用完deletedelete。不浪费空间,但需要管理,容易出错。

(2)静态数组存储二叉树。

编码简单,速度快。
用数组实现完全二叉树,左右子节点都不用定义:
总节点个数为kk的完全二叉树,编号i>1i>1的节点,父节点i/2i/2;
2i>k2i>k,则节点ii没有子节点,若2i+1>k2i+1>k,则节点i没有右子节点;
如果节点ii有子节点,那么左子节点是2i2i,右子节点是2i+12i+1

(3)多叉树转化为二叉树

3.二叉树的遍历

二叉树.png

1.BFSBFS 按层遍历

如图,按EBGADFICHE-BG-ADFI-CH顺序搜索。

2.DFSDFS

(1)先序遍历。父-左-右

如图,按EBADCGFIHEBADCGFIH顺序遍历。

(2)中序遍历。左-父-右

如图,按ABCDEFGHIABCDEFGHI顺序遍历。
二叉搜索树中排序是中序遍历,特征:
若已知根节点,则根节点左边的数都在左子树上,右边的数都在右子树上,对其子树也是如此。

(3)后序遍历。左-右-父

如图,按ACDBFHIGEACDBFHIGE顺序遍历。

已知中序遍历和另一种遍历顺序,则可把这棵树构造出来:由先序遍历或后序遍历知根节点,而中序遍历中根节点左端的为左子树,右端的右子树,再由先序遍历或后序遍历知子根节点,递归地构造子树。

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2023-2025 Shiki
  • Visitors: | Views: