网站seo方法,秀米h5页面怎么制作,凡科小程序登录,宝塔wordpress安装页面打不开#二叉树的特点#xff1a;每一个节点最多有两棵子树#xff0c;所以二叉树中不存在度大于2的节点#xff0c;注意#xff0c;是最多有两棵#xff0c;没有也是可以的 左子树和右子树是有顺序的#xff0c;次序不能颠倒#xff0c;这点可以在哈夫曼编码中体现#xff0c…#二叉树的特点每一个节点最多有两棵子树所以二叉树中不存在度大于2的节点注意是最多有两棵没有也是可以的 左子树和右子树是有顺序的次序不能颠倒这点可以在哈夫曼编码中体现 顺序不同编码方式不同-即使树中某个节点中只有一个子树的花也要区分它是左子树还是右子树二叉树一般有五种形态 1.空二叉树 2.只有一个根节点 3.根结点只有左子树 4.根节点只有右子树#二叉树的性质 1在二叉树的第i层上最多有2^i-1个节点 2深度为K的二叉树之多有2^k-1个节点这里的深度K意思就是有K层的二叉树 3对于任何一棵二叉树T如果其终端节点有No个度为2的节点数有N2则NoN21 4: 具有n个节点的完全二叉树的深度为[log2n]1([x]表示不大于x的最大整数)#1.二叉树的存储结构(二叉链表)//二叉树的存储结构一个数据域2个指针域typedef struct BiTNode{char data;struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;#2.首先要建立一个二叉树建立二叉树必须要了解二叉树的遍历方法。我在这里展示的是二叉树的递归建立方式//我在这里实现的是二叉树的前序遍历方式创建如果要使用中序或者后序的方式建立二叉树只需将生成结点和构造左右子树的顺序改变即可void CreateBiTree(BiTree *T){char ch;scanf(%c,ch);if(ch#)*TNULL;else{*T(BiTree )malloc(sizeof(BiTNode));if(!*T)exit(-1);(*T)-datach;CreateBiTree((*T)-lchild);CreateBiTree((*T)-rchild);}}#3.二叉树的遍历方式(递归建立)void PreOrderTraverse(BiTree T)//二叉树的先序遍历{if(TNULL)return ;printf(%c ,T-data);PreOrderTraverse(T-lchild);PreOrderTraverse(T-rchild);}void InOrderTraverse(BiTree T)//二叉树的中序遍历{if(TNULL)return ;InOrderTraverse(T-lchild);printf(%c ,T-data);InOrderTraverse(T-rchild);}void PostOrderTraverse(BiTree T)//后序遍历{if(TNULL)return;PostOrderTraverse(T-lchild);PostOrderTraverse(T-rchild);printf(%c ,T-data);}#mac环境代码实现(完整代码)#include#includetypedef struct BiTNode{char data;struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;void PreOrderTraverse(BiTree T)//二叉树的先序遍历{if(TNULL)return ;printf(%c ,T-data);PreOrderTraverse(T-lchild);PreOrderTraverse(T-rchild);}void InOrderTraverse(BiTree T)//二叉树的中序遍历{if(TNULL)return ;InOrderTraverse(T-lchild);printf(%C ,T-data);InOrderTraverse(T-rchild);}void PostOrderTraverse(BiTree T)//后序遍历{if(TNULL)return;PostOrderTraverse(T-lchild);PostOrderTraverse(T-rchild);printf(%c ,T-data);}void CreateBiTree(BiTree *T){char ch;scanf(%c,ch);if(ch#)*TNULL;else{*T(BiTree )malloc(sizeof(BiTNode));if(!*T)exit(-1);(*T)-datach;CreateBiTree((*T)-lchild);CreateBiTree((*T)-rchild);}}void pri(){printf(\n);}int main(){BiTree T;printf(输入树(#代表空节点 AB#C##D##):);CreateBiTree(T);printf(前序遍历的结果是:);PreOrderTraverse (T);printf(\n中序遍历的结果是:);InOrderTraverse(T);printf(\n后序遍历的结果是:);PostOrderTraverse(T);pri();return 0;}