二叉树的常见代码汇总
有关二叉树的一些常见代码的汇总:
说明:关于二叉树中的链式存储结构的一些定义、性质、常见应用的伪代码和逻辑描述。
一、链式存储结构定义
对于二叉链表而言:n个结点,有2n个指针域,n+1个空指针域
二、二叉树的遍历及其常见应用
(实际上遍历顺序是按照根的访问顺序来命名的,始终是先左后右)
2、遍历的代码实现(以先序为例子)
1 | void Preorder (BiTree T){ |
这里给出的是伪代码,需要自行补充代码结果。对于中序和后序而言只需要更改一下这三个语句的顺序即可。
比如中序:
1 | Preoder(T->lchild);//访问左孩子 |
3、创建的代码实现(先序为例)
1 | void CreateBiTree(BiTree &T){ |
[考点1:先序和中序/中序和后序都可以唯一确定一棵二叉树,但是先序和后续不行,因为他只能确定根无法确定左右分支
考点2:给出
先序:ABCDEFG
中序:CBDEAFG,画出唯一确定的二叉树
(思路,一般会从先序/后序入手,确定第一个根节点,然后对应到中序中分出左右分支,最后确定这棵树)
1 | graph TB |
4、遍历算法的一些应用
这里比较平凡的应用到了递归的手法,代码比较简单但是逻辑上还是有点小复杂。
1、计算二叉树中的结点总数
1 | int NodeCount (BiTree T){ |
2、计算叶子节点数
1 | int LeafCount(BiTree T){ |
3、计算二叉树的深度
1 | int Depth(BiTree T){ |
4、节点查找
1 | BiTree search(BiTree T,ElemType x){ |
其实这里所用的应用,都可以理解为在一棵二叉树的前提下继续细分为两棵二叉树进行结果的讨论,依次递归下去直到树为NULL。
三、二叉树的常见性质
1、特点:度<=2
2、第i层最多有 2^i-1^(层次从1开始计算)
3、高度为k的二叉树最多有2^k^-1个节点
4、对任何一棵二叉树,n0个叶子结点,度为2的非叶子节点n2个,有n0=n2+1
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Find the way to...!