学习笔记3

树和二叉树

树定义:是n(n≥0)个结点的有限集合T。 n=0时(没有结点),称为空树。n>0时,必有一根。其余n-1个结点可以划分成m个根的子树
一棵树是由若干棵子树构成的。
每棵树除了根结点以外,每个结点有且仅有一 个直接前驱,但可以有0个或多个直接后继。
树的多种表示法。

森林:m(m≥0)棵互不相交的树的集合。

二叉树

在二叉树中,每个结点至多有2个儿子,并且有 左、右之分。
位于左边的孩子叫做左孩子 位于右边的孩子叫做右孩子

二叉树的性质:若二叉树的层次从 1 开始计数, 则,在 二叉树的第 i 层最多有 2 ^(i-1) 个结点。( i >= 1);高度为
k 的二叉树最多有 2^(k -1) 个结点;具有 n ( n >= 1) 个结点的二叉树的高度最高为n;对任何一棵二叉树, 如果其叶结点有 n0个,
度为2的结点有 n2 个, 则有 n0=n2+1

二叉树的存储结构:
二叉树的顺序存储结构
二叉树的链式存储结构

二叉树结点及二叉树的定义:

typedef struct Node 
{ 
      DataType data; 
      struct Node  *LChild; struct Node *RChild; 
} Bitnode, *BiTree;

建树

void CreateBiTree(BiTree *bt) 
{ 
      char ch; 
      ch = getchar(); 
            if(ch=='.') 
                  *bt=NULL; 
            else 
            { 
                  *bt=(BiTree)malloc(sizeof(BiTNode)); 
                        (*bt)->data=ch; 
                  CreateBiTree(&((*bt)->LChild)); //生成左子树 
                  CreateBiTree(&((*bt)->RChild)); //生成右子树 
            } 
}

原文地址:https://www.cnblogs.com/bwzh/p/12952593.html