一、特殊の二叉树
完全二叉树:
满二叉树:满二叉树是特殊の完全二叉树
二、常考性质
1.树の结点数=总度数+1,叶子结点数=二分之结点数+1
2.
3.完全二叉树:高为h的满二叉树有2^h-1个结点;高为h的完全二叉树至少2^h-1个结点,最多2^h-1个。
完全二叉树最多一个度为1的结点。
三、链式存储
#include<stdio.h>
//二叉树的链式存储
typedef struct BiTNode
{
int data;
struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
左孩子2i右孩子2i+1爹i/2取地板。
四、先中后序遍历
手写遍历序列の核心思想:递归(以中序为例,做题可以先把当前层的根、左、右分别写出来,空出一段距离,再找左子树...)
1.NLR
void PreOrderTraverse(BiTree T)
{
if (T != NULL) // 如果二叉树为空,返回
{
Visit(T); // 访问根节点
PreOrderTraverse(T->lchild); //先序遍历左子树
PreOrderTraverse(T->rchild); //先序遍历右子树
}
// 时间复杂度:O(n)
// 函数调用栈的弹出顺序就是先序遍历的访问顺序
}
2.LNR
中序遍历:当第二次路过一个结点时,它才被访问
3.LRN
第三次路过...